您当前的位置: 首页 > 数据库教程 > Oracle教程 > Oracle提高sql执行效率的心得建议

Oracle提高sql执行效率的心得建议

作者:不详 来源:网络 发布时间: 2014-09-01 11:54 点击:
sql执行效率一直都是为人所关注,那到底应该怎样提高呢?有什么比较好的方法,下面与大家分享下比较不错的建议,感兴趣的朋友可以参考下,希望对大家有所帮助 复制代码 代码如下: --FROM子句中包含多个表的情况下,选择记录条数最少的表作为基础表 --解析WHERE子句是自

Oracle提高sql执行效率的心得建议

  sql执行效率一直都是为人所关注,那到底应该怎样提高呢?有什么比较好的方法,下面与大家分享下比较不错的建议,感兴趣的朋友可以参考下,希望对大家有所帮助

  复制代码 代码如下:

  -->FROM子句中包含多个表的情况下,选择记录条数最少的表作为基础表

  -->解析WHERE子句是自下而上的 过滤条件要有顺序

  -->ORACLE会将'*'转换成列名

  -->DELETE会在rollback segment中存放可恢复信息,可以试试TRUNCATE

  -->COMMIT会释放:1.rollback segment

  2.被程序语句获得的锁

  3.redo log buffer

  -->把Alias前缀于每个Column上可以减少解析的时间

  -->ORACLE解析sql语句时会把小写的字母转换成大写的再执行

  -->在索引列上使用NOT会停止使用索引转而执行全表扫描

  -->在索引列上进行运算会停止使用索引转而执行全表扫描

  -->使用'>=',而不是'>'

  -->where子句中'!='、'||'、'+'等符号会破坏索引

  -->IN的效率很低,IN子句将执行一个内部的排序和合并

  -->EXIST查询更为迅速

  -->对于两个索引列,UNION比OR效率更高

  -->IS NULL会破坏索引

  -->DISTINCT,UNION,MINUS,INTERSECT,ORDER BY等都带有SORT功能,会耗费资源

  -->多个索引列时尽量使用第一个索引列

  -->尽量用 UNION ALL代替UNION

  -->不要用TO_NUMBER()之类的函数改变索引列的类型。

  -->对于字符类型的索引列尽量写成:col = '123' 而不是 col = 123,后者会被解析为TO_NUMBER(EMP_TYPE)=123

  -->适当的地方使用适当的关键字:HAVING会在检索出所有记录之后对结果集进行过滤 能使用WHERE解决时不要用HAVING

  -->索引也需要维护,INSERT,DELETE,UPDATE会因索引而做出更多次I/O

  -->重构索引是必要的:ALTER INDEX <INDEXNAME> REBUILD <TABLESPACENAME> [ONLINE]

  详细出处参考:http://www.jb51.net/article/40415.htm
分享到:
本文"Oracle提高sql执行效率的心得建议"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4