天天看點

SQL優化常用方法21

用EXISTS替換DISTINCT

當送出一個包含一對多表資訊(比如部門表和雇員表)的查詢時,避免在SELECT子句中使用DISTINCT.

一般可以考慮用EXIST替換

例如: 低效: SELECT DISTINCT DEPT_NO,DEPT_NAME FROM DEPT D,EMP E WHERE D.DEPT_NO = E.DEPT_NO

高效: SELECT DEPT_NO,DEPT_NAME FROM DEPT D

WHERE EXISTS ( SELECT ‘X' FROM EMP E WHERE E.DEPT_NO = D.DEPT_NO);

EXISTS 使查詢更為迅速,因為RDBMS核心子產品将在子查詢的條件一旦滿足後,立刻傳回結果.