变相怪杰 发表于 2015-1-16 22:39:54

MYSQL教程之ORACLE经常使用傻瓜}1000(之五)

你会发现实际上MySQL可以更少地占用资金,前者的每CPU许可费用一般从4000美元到25000美元不等,而MySQL企业版的支持和维护成本就更低了。oracle

ORACLE经常使用傻瓜}1000(之五)



作者:CCBZZP



人人在ORACLE的r候大概龅胶芏嗫雌聿浑y的},特eπ率碚f,明天我伟阉Y一下,l布o人人,但愿Υ蠹矣助!和人人一同探,配合M步!



ORACLE妙手碚f是不必看的.


本讲次要讲的是SQL语句的优化办法!次要基于ORACLE9I的.
174./*+ALL_ROWS*/
标明对语句块选择基于开支的优化办法,并取得最好吞吐量,使资本损耗最小化.
比方:
SELECT/*+ALL+_ROWS*/EMP_NO,EMP_NAM,DAT_INFROMBSEMPMSWHEREEMP_NO=CCBZZP;

175./*+FIRST_ROWS*/
标明对语句块选择基于开支的优化办法,并取得最好呼应工夫,使资本损耗最小化.
比方:
SELECT/*+FIRST_ROWS*/EMP_NO,EMP_NAM,DAT_INFROMBSEMPMSWHEREEMP_NO=CCBZZP;

176./*+CHOOSE*/
标明假如数据字典中有会见表的统计信息,将基于开支的优化办法,并取得最好的吞吐量;
标明假如数据字典中没有会见表的统计信息,将基于划定规矩开支的优化办法;
比方:
SELECT/*+CHOOSE*/EMP_NO,EMP_NAM,DAT_INFROMBSEMPMSWHEREEMP_NO=CCBZZP;

177./*+RULE*/
标明对语句块选择基于划定规矩的优化办法.
比方:
SELECT/*+RULE*/EMP_NO,EMP_NAM,DAT_INFROMBSEMPMSWHEREEMP_NO=CCBZZP;

178./*+FULL(TABLE)*/
标明对表选择全局扫描的办法.
比方:
SELECT/*+FULL(A)*/EMP_NO,EMP_NAMFROMBSEMPMSAWHEREEMP_NO=CCBZZP;

179./*+ROWID(TABLE)*/
提醒明白标明对指定表依据ROWID举行会见.
比方:
SELECT/*+ROWID(BSEMPMS)*/*FROMBSEMPMSWHEREROWID>=AAAAAAAAAAAAAA
ANDEMP_NO=CCBZZP;

180./*+CLUSTER(TABLE)*/
提醒明白标明对指定表选择簇扫描的会见办法,它只对簇工具无效.
比方:
SELECT/*+CLUSTER*/BSEMPMS.EMP_NO,DPT_NOFROMBSEMPMS,BSDPTMS
WHEREDPT_NO=TEC304ANDBSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

181./*+INDEX(TABLEINDEX_NAME)*/
标明对表选择索引的扫描办法.
比方:
SELECT/*+INDEX(BSEMPMSSEX_INDEX)USESEX_INDEXBECAUSETHEREAREFEWMALEBSEMPMS*/FROMBSEMPMSWHERESEX=M;

182./*+INDEX_ASC(TABLEINDEX_NAME)*/
标明对表选择索引升序的扫描办法.
比方:
SELECT/*+INDEX_ASC(BSEMPMSPK_BSEMPMS)*/FROMBSEMPMSWHEREDPT_NO=CCBZZP;

183./*+INDEX_COMBINE*/
为指定表选择位图会见路经,假如INDEX_COMBINE中没有供应作为参数的索引,将选择出位图索引的
布尔组合体例.
比方:
SELECT/*+INDEX_COMBINE(BSEMPMSSAL_BMIHIREDATE_BMI)*/*FROMBSEMPMS
WHERESAL<5000000ANDHIREDATE<SYSDATE;

184./*+INDEX_JOIN(TABLEINDEX_NAME)*/
提醒明白命令优化器利用索引作为会见路径.
比方:
SELECT/*+INDEX_JOIN(BSEMPMSSAL_HMIHIREDATE_BMI)*/SAL,HIREDATE
FROMBSEMPMSWHERESAL<60000;

185./*+INDEX_DESC(TABLEINDEX_NAME)*/
标明对表选择索引降序的扫描办法.
比方:
SELECT/*+INDEX_DESC(BSEMPMSPK_BSEMPMS)*/FROMBSEMPMSWHEREDPT_NO=CCBZZP;

186./*+INDEX_FFS(TABLEINDEX_NAME)*/
对指定的表实行疾速全索引扫描,而不是全表扫描的举措.
比方:
SELECT/*+INDEX_FFS(BSEMPMSIN_EMPNAM)*/*FROMBSEMPMSWHEREDPT_NO=TEC305;

187./*+ADD_EQUALTABLEINDEX_NAM1,INDEX_NAM2,...*/
提醒明白举行实行计划的选择,将几个单列索引的扫描合起来.
比方:
SELECT/*+INDEX_FFS(BSEMPMSIN_DPTNO,IN_EMPNO,IN_SEX)*/*FROMBSEMPMSWHEREEMP_NO=CCBZZPANDDPT_NO=TDC306;

188./*+USE_CONCAT*/
对查询中的WHERE前面的OR前提举行转换为UNIONALL的组合查询.
比方:
SELECT/*+USE_CONCAT*/*FROMBSEMPMSWHEREDPT_NO=TDC506ANDSEX=M;

189./*+NO_EXPAND*/
关于WHERE前面的OR大概IN-LIST的查询语句,NO_EXPAND将制止其基于优化器对其举行扩大.
比方:
SELECT/*+NO_EXPAND*/*FROMBSEMPMSWHEREDPT_NO=TDC506ANDSEX=M;

190./*+NOWRITE*/
克制对查询块的查询重写操纵.

191./*+REWRITE*/
能够将视图作为参数.

192./*+MERGE(TABLE)*/
可以对视图的各个查询举行响应的兼并.
比方:
SELECT/*+MERGE(V)*/A.EMP_NO,A.EMP_NAM,B.DPT_NOFROMBSEMPMSA(SELETDPT_NO
,AVG(SAL)ASAVG_SALFROMBSEMPMSBGROUPBYDPT_NO)VWHEREA.DPT_NO=V.DPT_NO
ANDA.SAL>V.AVG_SAL;

193./*+NO_MERGE(TABLE)*/
关于有可兼并的视图不再兼并.
比方:
SELECT/*+NO_MERGE(V)*/A.EMP_NO,A.EMP_NAM,B.DPT_NOFROMBSEMPMSA(SELETDPT_NO
,AVG(SAL)ASAVG_SALFROMBSEMPMSBGROUPBYDPT_NO)VWHEREA.DPT_NO=V.DPT_NO
ANDA.SAL>V.AVG_SAL;

194./*+ORDERED*/
依据表呈现在FROM中的按次,ORDERED使ORACLE依此按次对其毗连.
比方:
SELECT/*+ORDERED*/A.COL1,B.COL2,C.COL3FROMTABLE1A,TABLE2B,TABLE3C
WHEREA.COL1=B.COL1ANDB.COL1=C.COL1;

195./*+USE_NL(TABLE)*/
将指定表与嵌套的毗连的行源举行毗连,并把指定表作为外部表.
比方:
SELECT/*+ORDEREDUSE_NL(BSEMPMS)*/BSDPTMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NAMFROMBSEMPMS,BSDPTMSWHEREBSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

196./*+USE_MERGE(TABLE)*/
将指定的表与其他行源经由过程兼并排序毗连体例毗连起来.
比方:
SELECT/*+USE_MERGE(BSEMPMS,BSDPTMS)*/*FROMBSEMPMS,BSDPTMSWHERE
BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

197./*+USE_HASH(TABLE)*/
将指定的表与其他行源经由过程哈希毗连体例毗连起来.
比方:
SELECT/*+USE_HASH(BSEMPMS,BSDPTMS)*/*FROMBSEMPMS,BSDPTMSWHERE
BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

198./*+DRIVING_SITE(TABLE)*/
强迫与ORACLE所选择的地位分歧的表举行查询实行.
比方:
SELECT/*+DRIVING_SITE(DEPT)*/*FROMBSEMPMS,DEPT@BSDPTMSWHEREBSEMPMS.DPT_NO=DEPT.DPT_NO;

199./*+LEADING(TABLE)*/
将指定的表作为毗连序次中的首表.

200./*+CACHE(TABLE)*/
当举行全表扫描时,CACHE提醒可以将表的检索块安排在缓冲区缓存中比来起码列表LRU的比来利用端
比方:
SELECT/*+FULL(BSEMPMS)CAHE(BSEMPMS)*/EMP_NAMFROMBSEMPMS;

201./*+NOCACHE(TABLE)*/
当举行全表扫描时,CACHE提醒可以将表的检索块安排在缓冲区缓存中比来起码列表LRU的比来利用端
比方:
SELECT/*+FULL(BSEMPMS)NOCAHE(BSEMPMS)*/EMP_NAMFROMBSEMPMS;

202./*+APPEND*/
间接拔出到表的最初,能够进步速率.
insert/*+append*/intotest1select*fromtest4;
203./*+NOAPPEND*/
经由过程在拔出语句保存期内中断并行形式来启动惯例拔出.

insert/*+noappend*/intotest1select*fromtest4;



待续...


珍贵的资金可以用于其他业务的启动,诸如市场、广告或调研和开发等。

再现理想 发表于 2015-1-19 21:04:06

相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐

金色的骷髅 发表于 2015-1-25 18:12:21

多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。

因胸联盟 发表于 2015-2-3 12:42:42

对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。

兰色精灵 发表于 2015-2-9 00:51:33

我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!

海妖 发表于 2015-2-26 16:02:42

索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。

若相依 发表于 2015-3-8 15:55:31

我个人认为就是孜孜不懈的学习

第二个灵魂 发表于 2015-3-16 03:58:10

外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。

飘灵儿 发表于 2015-3-22 20:08:10

这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
页: [1]
查看完整版本: MYSQL教程之ORACLE经常使用傻瓜}1000(之五)