当前位置: 代码迷 >> Oracle技术 >> 执行计划(目录为啥没有使用)
  详细解决方案

执行计划(目录为啥没有使用)

热度:221   发布时间:2016-04-24 08:06:45.0
执行计划(索引为啥没有使用)
首先说下这个是单表查询,1000万数据量,检索的是20万数据量,只有一个where条件,并且这个where条件是建了索引的。
直接查看执行计划是走的全表扫描、20万/1000万=2%。这么少的数据量为啥也走全表扫描,是没有建对索引,还是其他情况?
1、
2、
3、
4、
5、
6、

------解决思路----------------------
是个好问题,推荐一下,大家一起看看
从1和2的比较中,table access full以cost更低的优势胜出
之所以使用索引会有这么大的cost,是因为根据in后面的参数,出现多次的跳转

到3的时候,指定first rows(100), 执行计划中的基数变成了101. 此时,in里面的参数可能只要找到其中一个就能满足条件,走索引的成本就变得很低
到190000的时候,接近全表扫描和走索引的临界点。到了200000,和all_rows已经没有区别