- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1. ?说明数据SQL执行的效率,我们在编写SQL语句应该遵循一定的优化规则,使代码风格统一、规范。充分利用表索引,避免2. ?调优方法1) ?相同功能、性能的SQLORACLE采用共享内存SGA的机制,因此ORACLE会SQL进行分析,并且占用共享内存;如果ORACLE只分析一次,遇到相同SQL,会直接从共享内存中;这样便能减少共享池的开销以及代码的复用。处理方法:保证书写格式相同,包括大小写,空格位置,表SQL语句作为公共函数由其它函数调用的方式使用。2 ) ?动态SQL:SQL采用3) ?连接方式与表名顺序多表ORACLE的解析器按照从右到左的FROM子句中的表名;因此写在最后的那,扫描FROM子句中最右的那个表,并,然后FROM子句中最后第二个表,最后将所有从第二个表中适4) ?查询条件顺序ORACLE采用自下而上的WHERE子句,根据,表之WHERE条件之前, 那些可以WHERE子句的末尾。5) ?(1) ?SELECT子句中避免使用 * 使用* ,Oracle便会(2) ?使用表的(Alias)多表6) ?函数和表达式(1) ?用=替代例如:DEPTNO上有一个索引,高效:?SELECT * FROM EMP WHERE DEPTNO =4低效:SELECT * FROM EMP WHERE DEPTNO 3???两者的区别在于,前者DBMS将直接跳到第一个DEPT等于4的DEPTNO=3的DEPT大于3的.(2) ?使用DECODE函数来减少处理时间使用DECODE函数可以避免重.(3) ?用TRUNCATE替代DELETE当,在通常情况下, 回(rollback segments ) 用来存放可以被恢. 如果你没有COMMIT事ORACLE会将数据恢(准确地) ,而当运用TRUNCATE 回.当命令运行后,数据不能被恢?TRUNCATE只在删除全表或分区适用,TRUNCATE是DDL不是DML7) ?常用(1)?用EXISTS替代IN用IN将启用全表EXISTS将利用索引,提高(2) ?用NOT EXISTS替代NOT IN用NOT IN将启用全表NOT EXISTS将利用索引,提高(3) ?用表EXISTS(4) ?用EXISTS替DISTINCT(5) ?避免在索引列上使用IS NULL和IS NOT NULL如果索引包含任何可以ORACLE将无法使用低效 (索引失效) :SELECT * FROM DEPARTMENT WHERE DEPT_CODE IS NOT NULL;高效(索引有效) : SELECT * FROM DEPARTMENT WHERE DEPT_CODE =0;(6) ?用UNION-ALL 替UNION当SQLUNION两个UNION-ALL的方式被合并,然后在如果用UNION ALL替代UNION,(7) ?用UNION替OR (适用于索引列)通常情况下,用UNION替WHERE子句中的OR将会起到对索引列使用OR将造成全表column没有被索引,OR而降低。(8) ?用WHERE替代ORDER BYORDER BY 子句只在两种严格的条件下使用索引: ORDER BY中所有的列必ORDER BY中所有的列必 WHERE子句使用的索引和ORDER BY子句中所使用的索引不能并列.(9) ?用WHERE子句替换HAVING子句避免使用HAVING子句,HAVING 只会在WHERE子句限制:??低效:??SELECT REGION,AVG(LOG_SIZE)???FROM LOCATION???GROUP BY REGION????HAVING REGION REGION != SYDNEY???AND REGION != PERTH????高效????SELECT REGION,AVG(LOG_SIZE)????FROM LOCATION????WHERE REGION REGION != SYDNEY????AND REGION != PERTH????GROUP BY REGION?HAVING 中的条件一般用于COUNT() 等等。除此之外,一般的条件WHERE子句中。(10) ?GROUP BY的使用提高GROUP BY 语句的效率,可以通过将不需要的记录在GROUP BY 之前(11) ?全局参数8) ?其它因素(1) ?减少当SQL语句时,ORACLE在内部:解析SQL((估算索引的利用率((绑定变量((读数据块等等((由此可见, 减少 , 就能ORACLE的工作量。(2) ?常使用COMMIT只要有可能,在程序中尽量多使用C
文档评论(0)