时间:2021-07-01 10:21:17 帮助过:3人阅读
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优化
标签: