Oracle数据库中等值优化
禁止对“=”左侧字段使用函数、运算,避免在join、group by 中使用函数,这样可以让优化器更好的发挥作用
说明:如果在等号左侧进行表达式、函数操作,会导致数据库引擎放弃索引进行全表扫描
eg:
SELECT * FROM t2 WHERE score/10 = 9
SELECT * FROM t2 WHERE SUBSTR(username,1,2) = ‘li’
优化方式:可以将表达式、函数操作移动到等号右侧。如下:
SELECT * FROM t2 WHERE score = 10*9
SELECT * FROM t2 WHERE username LIKE ‘li%’
需注意:substr(str,1,2)可以用like 'li%'来替换,但是在字段开头进行模糊查询即(like ‘%li%’,还是会放弃索引而进行全表扫描)