gpt4 book ai didi

SQL 服务器 : Why Clustered Index Scan and not Table Scan?

转载 作者:行者123 更新时间:2023-12-02 06:38:34 30 4
gpt4 key购买 nike

我有以下表架构 -

CREATE TABLE [dbo].[TEST_TABLE]
(
[TEST_TABLE_ID] [int] IDENTITY(1,1) NOT NULL,
[NAME] [varchar](40) NULL,
CONSTRAINT [PK_TEST_TABLE] PRIMARY KEY CLUSTERED
(
[TEST_TABLE_ID] ASC
)
)

我在 TEST_TABLE 中插入了大量数据。

由于我已将 TEST_TABLE_ID 列标记为主键,因此将在 TEST_TABLE_ID 上创建聚簇索引。

当我运行以下查询时,执行计划显示了预期的 Clustered Index Scan

SELECT * FROM TEST_TABLE WHERE TEST_TABLE_ID = 34

但是,当我运行以下查询时,我期望表扫描,因为 NAME 列没有任何索引:

SELECT * FROM TEST_TABLE WHERE NAME LIKE 'a%'

但在执行计划中显示聚集索引扫描

既然 NAME 列没有任何索引,为什么它访问聚集索引?

我相信,这是因为聚簇索引驻留在数据页上而发生的。

谁能告诉我我的假设是否正确?还是有其他原因?

最佳答案

聚集索引是存储所有表数据的索引。因此,表扫描与聚簇索引扫描相同。

在没有聚簇索引(“堆”)的表中,表扫描需要遍历所有数据页。这就是查询优化器所说的“表扫描”。

关于SQL 服务器 : Why Clustered Index Scan and not Table Scan?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12615272/

30 4 0