Oracle提高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]
免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。
新手学oracle常见疑问2019-12-05
oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解2019-01-22
oracle case when 语句的用法详解2019-02-07
ORACLE性能优化之SQL语句优化2021-03-10
oracle中使用group by优化distinct2019-12-05
ORACLE 10g 安装教程[图文]2019-01-21
ORA-00947:Not enough values (没有足够的值)的深入分2019-01-22
Oracle显示游标的使用及游标for循环2019-03-01
Oracle 查看表空间的大小及使用情况sql语句2019-01-22
ORA-12514及ORA-28547错误解决方案2019-01-23