• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Oracle提高sql执行效率的建议

mysql 搞代码 4年前 (2022-01-09) 18次浏览 已收录 0个评论

–gt;FROM子句中包含多个表的情况下,选择记录条数最少的表作为基础表 –gt;解析WHERE子句是自下而上的 过滤条件要有顺序

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

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

–>Oracle会将’*’转换成列名

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

–>COMMIT会释放:

1.rollback segment
2.被程序语句获得的锁
3.redo log buffer

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

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

本文来源gao!daima.com搞$代!码网

->在索引列上使用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 REBUILD [ONLINE]


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Oracle提高sql执行效率的建议

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址