IN 和 OR的处理(IN 效率高于 OR)
SQL使用了IN 和 OR,并不会利用索引,会进行全表搜索。
处理方法:
1.用UNION ALL 替换 IN。
2.IN (SELECT 语句),改用EXISTS,例如:
SELECT * FROM T1
WHERE A IN (SELECT A FROM T2)
改为:
SELECT * FROM T1
WHERE EXISTS (SELECT 1 FROM T2 WHERE A = T1.A)
注意:外循环大用IN,内循环大用EXISTS,考虑的是遍历次数
3.使用强制索引
SELECT
/*+
index(HIS EVT_TIMESTAMP1)
index(HIS EVT_CATE1)
*/--强制使用索引