gpt4 book ai didi

sql-server - 什么是非聚集索引扫描

转载 作者:行者123 更新时间:2023-12-01 08:28:46 24 4
gpt4 key购买 nike

我知道什么是表扫描、聚集索引扫描和索引查找,但是我的谷歌技能让我无法找到对非聚集索引扫描的精确解释。为什么以及何时查询使用非聚集索引扫描?

谢谢你。

最佳答案

顾名思义,非聚簇索引扫描是对非聚簇索引的扫描 - 如果选择中的所有字段都可以从非聚簇索引中完成,那么通常会执行 NCI 扫描,但查询的选择性或索引太高了差导致寻求。

NCI 扫描可能比聚集索引扫描具有性能优势,因为 NCI 索引通常比聚集索引更窄(因为它们通常具有更少的列),因此要获取的页面更少,I/O 更少。

我在 SqlFiddle Here 上放置了一个人为的场景 - 单击底部的“查看执行计划”。

给定以下表、聚簇和非聚簇索引的设置:

CREATE TABLE Foo
(
FooId INT,
Name VARCHAR(50),
BigCharField CHAR(7000),

CONSTRAINT PK_FOO PRIMARY KEY CLUSTERED(FooId)
);

CREATE NONCLUSTERED INDEX IX_FOO ON Foo(Name);

以下查询演示了不同的扫描:
-- Clustered Index Scan - because we need all fields, CI is most efficient
SELECT * FROM FOO;

-- Non Clustered Index Scan - because we just need Name, but have no selectivity, the NCI
-- will suffice and is narrower.
SELECT DISTINCT(Name) FROM FOO;

关于sql-server - 什么是非聚集索引扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26510046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com