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