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