表扫描检查哪些列?

时间:2017-12-25 01:07:46

标签: sql-server indexing

表格扫描究竟有效吗?

以下是我所知道的:

  • 表扫描会搜索整个表格。
  • 聚簇索引扫描只搜索在该索引上定义的任何列。

让我们假设我们有这种情况:

表-A

列:ID,城市,国家/地区

我在City上有一个聚集索引。

我运行的查询是:

select city
from table_a
where city = 'austin'

实际问题:

  1. 在这种情况下,表扫描只会查看city列,还是会检查ID,城市和国家/地区列。

  2. 如果表扫描只搜索一列,是否可以说表扫描和索引扫描具有相同的性能?

  3. 编辑第1部分:

    谷歌搜索写道:

      

    当表扫描发生时,SQL Server会将所有行和列读入内存。当索引扫描发生时,它将读取所有行,只读取索引中的列。

1 个答案:

答案 0 :(得分:0)

查看执行计划。我希望聚集索引搜索,以便只触摸具有指定城市的那些行。如果搜索非索引列,将执行聚簇索引扫描,以便触摸所有行,但仅返回符合条件的行。

只会从行中提取查询所需的列,并且在扫描或搜索操作期间不会检查无关列。