(32) 使用索引
a. 如果检索数据量超过 30% 的表中记录数 . 使用索引将没有显著的效率提高 .
b. 在特定情况下 , 使用索引也许会比全表扫描慢 , 但这是同一个数量级上的区别 . 而通常情况下 , 使用索引比全表扫描要块几倍乃至几千倍 !
(33)避免使用耗费资源的操作 :
带有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY 的 SQL 语句会启动 SQL 引擎
执行耗费资源的排序(SORT) 功 能 . DISTINCT 需要一次排序操作 , 而其他的至少需要执行两次排序 . 通常 , 带有 UNION, MINUS , INTERSECT 的 SQL 语句都可以用其他方式重写 . 如果你的数据库的 SORT_AREA_SIZE 调配得好 , 使用 UNION , MINUS, INTERSECT 也是可以考虑的 , 毕竟它们的可读性很强
(34)优化 GROUP BY:
提高GROUP BY 语句的效率 , 可以通过将不需要的记录在 GROUP BY 之前过滤掉 . 下面两个 查询返回相同结果但第二个明显就快了许多 .
低效:
SELECT JOB , AVG(SAL)
FROM EMP
GROUP by JOB
HAVING JOB = ‘ PRESIDENT'
OR JOB = ‘ MANAGER'
高效:
SELECT JOB , AVG(SAL)
FROM EMP
WHERE JOB = ‘ PRESIDENT'
OR JOB = ‘ MANAGER'
GROUP by JOB
{转}SQL优化34条建议2
最新推荐文章于 2024-08-14 13:50:42 发布