什么时候全表扫描比索引扫描好?

7 sql-server execution-plan

在哪些情况下(在 SQL Server 中)全表扫描优于索引扫描?

gbn*_*gbn 11

当。。。的时候

  • 桌子足够小没有实际区别
  • 统计上,无论如何你都会返回大多数行

第二种情况需要排位赛

  • 如果索引覆盖,索引扫描将替换索引查找
  • 需要键/书签查找的多行索引查找或扫描将很昂贵,而表扫描可能会更好

最后

  • 对于聚集索引,索引扫描和表扫描几乎相同


小智 7

当记录的选择性非常高时,全表扫描总是比进行索引扫描要好。

http://www.techipost.com/single-index-versus-full-table-scan/

由 gbn 编辑:

例如,如果需要多次键查找(例如,非键数据的非聚集索引到聚集索引),优化器可能会决定扫描表/聚集索引更容易。

或者您在索引列中没有很多不同的值


mar*_*c_s 6

如果表

  • 很小
  • 执行索引扫描然后在基表中进行多次书签查找的成本比全表扫描更昂贵