SQL 语句优化的门道,真是值得研究一番。Oracle 的优化规则还挺多的,但掌握几个核心技巧,效果就出来了。比如,避免大表全表扫描,这一条就能救你一命。别笑,写个查询慢得要死,发现就是因为扫了整个表,真让人崩溃。
驱动表选小表,其实多人一开始不太注意。小表做基础表,在规则优化器那边吃香。你可以理解成,把压力交给更表来承担,效率自然高不少。
WHERE 子句的顺序也有门道。别小看谁先写谁后写,有时候换个顺序,执行计划立马就变了,响应也快多了。嗯,是在多表连接的场景下,更。
SELECT *
这招新手爱用,但老司机都避开了。为啥?字段越多,数据库越累,还影响索引优化。你明确写出字段名,执行效率立马提升一个档次。
还有索引这块,建议你多用下EXPLAIN PLAN
看下执行路径。有时候你以为在用索引,其实根本没触发,白忙一场。
想深入点?下面这些文章我还挺推荐的:
- Oracle 表扫描和驱动表优化
- 全表扫描性能优化策略详解
- 优化 WHERE 子句中的表连接顺序
- 全表扫描的高效利用
- SQL 查询全表扫描的合法性评估
- 用 Where 子句替代 HAVING 子句来优化性能
如果你 SQL 写得多,强烈建议收藏下这类优化技巧,碰到慢查询的时候能少走不少弯路。