作为一个工作六年的数据分析师,以下是我总结出的常用的sql优化方法 ,以oracle为例
一、操作符优化
1.尽量用 EXISTS 和 NOT EXISTS 代替 in 和 not in(此操作是强列不推荐使用的,因为它不能应用表的索引)
2. 尽量不要使用 IS NULL 或IS NOT NULL操作
判断字段是否为空一般是不会应用索引的,因为索引是不索引空值的。
推荐方案:用其它相同功能的操作运算代替,如:a is not null 改为 a>0 或 a> " " 等
3. > 及 < 操作符(大于或小于操作符)
大于或小于操作符一般情况下是不用调整的,因为它有索引就会采用索引查找。
但有的情况下可以对它进行优化,如一个表有100万记录,一个数值型字段A,30万记录的A=0,30万记录的A=1,39万记录的A=2,1万记录的A=3。那么执行A>2与A>=3的效果就有很大的区别了,因为A>2时ORACLE会先找出为2的记录索引再进行比较,而A>=3时ORACLE则直接找到=3的记录索引
4. LIKE操作符
LIKE ‘%5400%’ 这种查询不会引用索引,而LIKE ‘X5400%’则会引用范围索引。
5. UNION操作符
推荐方案:采用UNION ALL操作符替代UNION,因为UNION ALL操作只是简单的将两个结果合并后就返回。
二、SQL书写的影响
1、同一功能同一性能不同写法SQL的影响。
如一个SQL A程序员写的为 Select * from zl_y