oracle SQL 效率优化

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)
*/--强制使用索引

猜你喜欢

转载自blog.csdn.net/xufan601391682/article/details/79245032