那些情况可能会导致全表扫描:
1、没有合适的索引
2、条件列上使用了运算符
3、使用函数(显示转换)
4、条件列上发生了隐式转换
5、条件所对应的列不在组合索引的第一位
6、条件列上使用了is Null或is not Null
7、使用了左模糊查询或双边模糊查询
8、使用不等关联
9、条件列对应的索引选择度不高
10、表很小
11、使用并行
12、使用HINT提示全表扫描
13、or使用不当
14、取得数据量占比比较大
15、索引碎片太严重
如何建立索引
1、单列索引(选择性)
2、组合索引(将最常用的列作为前导列,唯一性多,范围查询的字段尽量放在前面,组合索引字段不宜过多,不要使索引冗余,尽可能少的建立索引,更多的被使用,组合索引下where后面的条件先后不影响。
3、外键一定要建立索引
4、如果对某列有函数操作可以考虑建立函数索引
5、nvarchar2和varchar2隐式转换,走全表扫描,但问题比较难发现。