WHERE子句中的连接顺序

2018/07/31 sql 优化

WHERE子句中的连接顺序  

   SQLSERVER采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在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' 

Search

    Table of Contents