在做 ORACLE SQL 性能优化时,避免在索引列上使用计算是个蛮实用的技巧。如果你在 WHERE 子句中对索引列进行了计算(比如使用函数),优化器就不会使用索引,而是选择全表扫描,这样会影响性能。举个例子,比如你写了类似 SELECT … FROM DEPT WHERE SAL * 12 > 25000;
这样的查询,优化器会跳过索引,直接全表扫描。相比之下,如果你把计算移到 WHERE
子句外面,比如 SELECT … FROM DEPT WHERE SAL > 25000/12;
,索引就能正常使用,性能自然会好多。
所以,优化器对计算的敏感度还是挺高的。如果你想要性能更高,最好避免在索引列上做计算。
如果你能遵循这个小技巧,查询速度会提升哦。其实类似的优化方式还有多,像全表扫描的高效利用、索引优化等,都可以你提升 SQL 性能。