sql性能优化

来源:互联网 发布:汕头网络 编辑:程序博客网 时间:2024/06/16 20:10
1.not in 强烈推荐不要使用,因为不能应用表的索引,推荐用not exists方案代替。
2.<>永远不会用到索引,推荐用其他相同功能的操作运算代替,比如a<>0 改为a> 0 or a<0;a<>'' 改为a>''。
3.IS NULL 或者IS NOT NULL 一般是不会应用索引的。a is not null 改为a > 0或者a > '' 。
4.一个整数型字段A,A>2 ,尽量用A>= 3。
5.like '% 5400%'不会用索引, 而like'X 5400 %'则会用索引。
6.Exists  ,当有A ,B两个结果集,当结果集B很大时,A较小时,使用exists。当A很大,B很小时,适用in。
7.在海量查询时尽量少用格式转换。
8.任何对列的操作都将导致表扫描,所以查询时要尽可能将操作符移到等号右边。
   低效:SELECT… FROM DEPT WHERE SAL * 12 > 25000; 高效:SELECT… FROM DEPT WHERE SAL > 25000/12;
9.In or 子句常会使用工作表,使索引失效。如果不产生大量重复值,可以考虑把子句拆开,拆开的子句中应包含索引。
10.WHERE子句中的连接顺序:SQL Server、 ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他 WHERE条件之前, 那些可以过 滤掉最大数量记录的条件必须写在WHERE子句的末尾。
11.SELECT子句中避免使用 '*': ORACLE 在解析的过程中, 会将'*'依次转换成所有的列名,这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间。
12.删除重复记录, 最高效的删除重复记录方法 (因为使用了ROWID)
  例子:DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHEREX.EMP_NO = E.EMP_NO);
13.用TRUNCATE替代DELETE: 当删除表中的记录时,在通常情况下,回滚段(rollbacksegments ) 用来存放可以被恢复的信息.
         如果你没有COMMIT事务,ORACLE 会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况) ,而当运用TRUNCATE时, 回滚段不再存放任何可 被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短。
14.用Where子句替换HAVING 子句: 避免使用 HAVING 子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤。
15.使用表的别名(Alias): 当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来, 就可以减少解析的时间并减少那些由Column歧义引起的语法错误。
16. sql语句用大写的;因为oracle 总是先解析sql 语句,把小写的字母转换成大写的再执行。
17. 在java代码中尽量少用连接符“+”连接字符串。
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 拉结筋 初学者拉筋方法图片 拉筋长高 拉筋的方法 拉筋图片 拉筋会长高吗 拉筋方法 拉结筋设置要求 拉筋拍打自愈法8个部位 拉筋凳 植筋拉拔检测数值一览表 拉筋动作 拉结筋长度 拉结筋图片 拉筋凳价格 暗柱拉筋 拉筋的正确方法图解2018 拉筋 腰椎间盘突出 建筑拉筋 拉筋方法图解 腿部拉筋 怎么正确拉筋长高图解 怎么拉筋 如何拉筋 床上腿部拉筋的方法图片 床上拉筋的方法图片 每天拉筋的好处 拉筋的正确方法图解 拉筋的坏处 筋硬的人怎么拉筋 拉筋有什么用 快速拉筋 怎样拉筋 如何快速拉筋 怎么拉筋才能长高 拉筋正脊复位疗法 拉筋能长高吗 怎么拉筋长高 拉筋能不能长高 拍打拉筋 拉筋可以瘦腿吗