码迷,mamicode.com
首页 > 数据库 > 详细

sql优化

时间:2016-04-02 20:15:14      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

1.用exists,not exists 代替in,not in

2.where后面的表是从右到左, 如表a 10条记录,表b 100条记录,那么b就是基础表 语句是where b,a 

3.三个以上的表连接查询,那就需要使用交叉表为基础表 

3.where 子句是自下而上的过滤,那么过滤量最大的数据应该写在最后面

 例如:  
   (低效,执行时间156.3秒)  
   SELECT *  
   FROM EMP E  
   WHERE SAL > 50000  
   AND JOB = ’MANAGER’  
   AND 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO);     
   (高效,执行时间10.6秒)  
   SELECT *  
   FROM EMP E  
   WHERE 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO)  
   AND SAL > 50000  
   AND JOB = ’MANAGER’;  

4.尽量避免使用*,如select *,

5.减少数据库访问次数

6.适当使用索性

7.where子句代替having,having先检索所有所有然后过滤

8.减少对表的查询
     

 

sql优化

标签:

原文地址:http://www.cnblogs.com/chenlutan/p/5348107.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!