有什么方法優化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')