有什么方法優化select語句

參考答案:原則是避免全表掃描,

 如果是有多表關聯的 把記錄數少的表放在前面,

 能把多的記錄過慮的條件放在where從句前面,

 exist代替in條件

 盡可能用索引

 

select索引什么時候失效

參考答案:索引的字段在sum等函數中時

------------------------------------------------
用exists代替in
SELECT *
FROM EMP (基礎表)
WHERE EMPNO > 0
AND DEPTNO IN (SELECT DEPTNO
FROM DEPT
WHERE LOC = ‘MELB')

高效exists:
SELECT *
FROM EMP (基礎表)
WHERE EMPNO > 0
AND EXISTS (SELECT ‘X'
FROM DEPT
WHERE DEPT.DEPTNO = EMP.DEPTNO
AND LOC = ‘MELB')