oracle 性能优化操作十八: 决议使用全表扫描还是使用索引

oracle 性能优化操作十八: 决定使用全表扫描还是使用索引

和所有的秘笈一样,最后一招都会又回到起点,最后我们来讨论一下是否需要建立索引,也许进行全表扫描更快。

在大多数情况下,全表扫描可能会导致更多的物理磁盘输入输出,但是全表扫描有时又可能会因为高度并行化的存在而执行的更快。

如果查询的表完全没有顺序,那么一个要返回记录数小于10%的查询可能会读取表中大部分的数据块,这样使用索引会使查询效率提高很多。

但是如果表非常有顺序,那么如果查询的记录数大于40%时,可能使用全表扫描更快。

因此,有一个索引范围扫描的总体原则是:

1)对于原始排序的表  仅读取少于表记录数40%的查询应该使用索引范围扫描。

   反之,读取记录数目多于表记录数的40%的查询应该使用全表扫描。

2)对于未排序的表    仅读取少于表记录数7%的查询应该使用索引范围扫描。
  
   反之,读取记录数目多于表记录数的7%的查询应该使用全表扫描。