仓酷云

标题: MYSQL编程:ORACLE SQL功能优化系列 (三) [打印本页]

作者: 因胸联盟    时间: 2015-1-16 22:38
标题: MYSQL编程:ORACLE SQL功能优化系列 (三)
用户时常会发现其实自己并不是第一个选用MySQL数据库的先驱者。”oracle|功能|优化


8.利用DECODE函数来削减处置工夫



利用DECODE函数能够制止反复扫描不异纪录或反复毗连不异的表.



比方:

SELECTCOUNT(*),SUM(SAL)

FROM EMP

WHEREDEPT_NO=0020

ANDENAMELIKE ‘SMITH%’;



SELECTCOUNT(*),SUM(SAL)

FROM EMP

WHEREDEPT_NO=0030

ANDENAMELIKE ‘SMITH%’;



你能够用DECODE函数高效地失掉不异了局



SELECTCOUNT(DECODE(DEPT_NO,0020,’X’,NULL))D0020_COUNT,

COUNT(DECODE(DEPT_NO,0030,’X’,NULL))D0030_COUNT,

SUM(DECODE(DEPT_NO,0020,SAL,NULL))D0020_SAL,

SUM(DECODE(DEPT_NO,0030,SAL,NULL))D0030_SAL

FROMEMPWHEREENAMELIKE‘SMITH%’;



相似的,DECODE函数也能够使用于GROUPBY和ORDERBY子句中.





9.整合复杂,有关联的数据库会见



假如你有几个复杂的数据库查询语句,你能够把它们整合到一个查询中(即便它们之间没有干系)

比方:



SELECTNAME

FROMEMP

WHEREEMP_NO=1234;



SELECTNAME

FROMDPT

WHEREDPT_NO=10;



SELECTNAME

FROMCAT

WHERECAT_TYPE=‘RD’;



下面的3个查询能够被兼并成一个:



SELECTE.NAME,D.NAME,C.NAME

FROMCATC,DPTD,EMPE,DUALX

WHERENVL(‘X’,X.DUMMY)=NVL(‘X’,E.ROWID(+))

ANDNVL(‘X’,X.DUMMY)=NVL(‘X’,D.ROWID(+))

ANDNVL(‘X’,X.DUMMY)=NVL(‘X’,C.ROWID(+))

ANDE.EMP_NO(+)=1234

ANDD.DEPT_NO(+)=10

ANDC.CAT_TYPE(+)=‘RD’;



(译者按:固然接纳这类办法,效力失掉进步,可是程序的可读性年夜年夜下降,以是读者仍是要衡量之间的利害)



10.删除反复纪录

最高效的删除反复纪录办法(由于利用了ROWID)



DELETEFROMEMPE

WHEREE.ROWID>(SELECTMIN(X.ROWID)

FROMEMPX

WHEREX.EMP_NO=E.EMP_NO);



11.用TRUNCATE替换DELETE

当删除表中的纪录时,在一般情形下,回滚段(rollbacksegments)用来寄存能够被恢复的信息.假如你没有COMMIT事件,ORACLE会将数据恢复到删除之前的形态(正确地说是

恢复到实行删除命令之前的情况)



而当使用TRUNCATE时,回滚段不再寄存任何可被恢复的信息.当命令运转后,数据不克不及被恢复.因而很少的资本被挪用,实行工夫也会很短.



(译者按:TRUNCATE只在删除全表合用,TRUNCATE是DDL不是DML)





12.只管多利用COMMIT



只需有大概,在程序中只管多利用COMMIT,如许程序的功能失掉进步,需求也会由于COMMIT所开释的资本而削减:

COMMIT所开释的资本:

a.回滚段上用于恢单数据的信息.

b.被程序语句取得的锁

c.redologbuffer中的空间

d.ORACLE为办理上述3种资本中的外部消费



(译者按:在利用COMMIT时必需要注重到事件的完全性,实际中效力和事件完全性常常是鱼和熊掌不成得兼)
MySQL已经为支持所有最流行的Web2.0语言做好了准备,诸如Ruby、Ajax等,当然还有PHP。有的业界分析师说过,“每一个Web2.0公司实质上就是一个数据库公司。
作者: 老尸    时间: 2015-1-19 20:00
光写几个SQL实在叫无知。
作者: 若相依    时间: 2015-1-26 16:07
入门没那么困难,精通没那么容易
作者: 深爱那片海    时间: 2015-2-4 17:08
发几份SQL课件,以飨阅者
作者: 小女巫    时间: 2015-2-10 04:30
入门没那么困难,精通没那么容易
作者: 乐观    时间: 2015-2-28 19:46
代替了原来VB式的错误判断。比Oracle高级不少。
作者: 再见西城    时间: 2015-3-17 05:10
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
作者: 蒙在股里    时间: 2015-3-23 21:48
比如日志传送、比如集群。。。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2