sql执行效率一直都是为人所关注那到底应该怎样提高呢?有什么比较好的方法下面与大家分享下比较不错的建议感兴趣的朋友可以参考下希望对大家有所帮助
复制代码 代码如下:
>FROM子句中包含多个表的情况下选择记录条数最少的表作为基础表
>解析WHERE子句是自下而上的 过滤条件要有顺序
>ORACLE会将*转换成列名
>DELETE会在rollback segment中存放可恢复信息可以试试TRUNCATE
>COMMIT会释放:rollback segment
被程序语句获得的锁
redo log buffer
>把Alias前缀于每个Column上可以减少解析的时间
>ORACLE解析sql语句时会把小写的字母转换成大写的再执行
>在索引列上使用NOT会停止使用索引转而执行全表扫描
>在索引列上进行运算会停止使用索引转而执行全表扫描
>使用>=而不是>
>where子句中!=||+等符号会破坏索引
>IN的效率很低IN子句将执行一个内部的排序和合并
>EXIST查询更为迅速
>对于两个索引列UNION比OR效率更高
>IS NULL会破坏索引
>DISTINCTUNIONMINUSINTERSECTORDER BY等都带有SORT功能会耗费资源
>多个索引列时尽量使用第一个索引列
>尽量用 UNION ALL代替UNION
>不要用TO_NUMBER()之类的函数改变索引列的类型
>对于字符类型的索引列尽量写成col = 而不是 col = 后者会被解析为TO_NUMBER(EMP_TYPE)=
>适当的地方使用适当的关键字HAVING会在检索出所有记录之后对结果集进行过滤 能使用WHERE解决时不要用HAVING
>索引也需要维护INSERTDELETEUPDATE会因索引而做出更多次I/O
>重构索引是必要的ALTER INDEX <INDEXNAME> REBUILD <TABLESPACENAME> [ONLINE]
详细出处参考