MYSQL网站制作之ORACLE SQL功能优化系列 (六)
一个相关的问题是第三方支持的资格问题,尽管直接来自厂商的支持和服务可以一定程度上减缓这个问题,但是,对于有的企业来说,通过强有力的本地化支持显然更有吸引力。oracle|功能|优化20.用表毗连交换EXISTS
一般来讲,接纳表毗连的体例比EXISTS更无效率
SELECTENAME
FROMEMPE
WHEREEXISTS(SELECT‘X’
FROMDEPT
WHEREDEPT_NO=E.DEPT_NO
ANDDEPT_CAT=‘A’);
(更高效)
SELECTENAME
FROMDEPTD,EMPE
WHEREE.DEPT_NO=D.DEPT_NO
ANDDEPT_CAT=‘A’;
(译者按:在RBO的情形下,前者的实行路径包含FILTER,后者利用NESTEDLOOP)
21.用EXISTS交换DISTINCT
当提交一个包括一对多表信息(好比部门表和雇员表)的查询时,制止在SELECT子句中利用DISTINCT.一样平常能够思索用EXIST交换
比方:
低效:
SELECTDISTINCTDEPT_NO,DEPT_NAME
FROMDEPTD,EMPE
WHERED.DEPT_NO=E.DEPT_NO
高效:
SELECTDEPT_NO,DEPT_NAME
FROMDEPTD
WHEREEXISTS(SELECT‘X’
FROMEMPE
WHEREE.DEPT_NO=D.DEPT_NO);
EXISTS使查询更加敏捷,由于RDBMS中心模块将在子查询的前提一旦满意后,立即前往了局.
22.辨认’低效实行’的SQL语句
用以下SQL工具找出低效SQL:
SELECTEXECUTIONS,DISK_READS,BUFFER_GETS,
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2)Hit_radio,
ROUND(DISK_READS/EXECUTIONS,2)Reads_per_run,
SQL_TEXT
FROMV$SQLAREA
WHEREEXECUTIONS>0
ANDBUFFER_GETS>0
AND(BUFFER_GETS-DISK_READS)/BUFFER_GETS<0.8
ORDERBY4DESC;
(译者按:固然今朝各类关于SQL优化的图形化工具层见叠出,可是写出本人的SQL工具来办理成绩一直是一个最好的办法)
23.利用TKPROF工具来查询SQL功能形态
SQLtrace工具搜集正在实行的SQL的功能形态数据并纪录到一个跟踪文件中.这个跟踪文件供应了很多有效的信息,比方剖析次数.实行次数,CPU利用工夫等.这些数据将能够用来优化你的体系.
设置SQLTRACE在会话级别:无效
ALTERSESSIONSETSQL_TRACETRUE
设置SQLTRACE在全部数据库无效仿,你必需将SQL_TRACE参数在init.ora中设为TRUE,USER_DUMP_DEST参数申明了天生跟踪文件的目次
(译者按:这一节中,作者并没有提到TKPROF的用法,对SQLTRACE的用法也不敷正确,设置SQLTRACE起首要在init.ora中设定TIMED_STATISTICS,如许才干失掉那些主要的工夫形态.天生的trace文件是不成读的,以是要用TKPROF工具对其举行转换,TKPROF有很多实行参数.人人能够参考ORACLE手册来懂得详细的设置.)
MySQL对硬件的较低要求是其最大的优势之一,不过需要注意的是:内存越多越好,因为所有的重要数据存储都在内存中完成。 多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。 多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油 代替了原来VB式的错误判断。比Oracle高级不少。 比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。 多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。 SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。 这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。 比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
页:
[1]