ang*_*son 55
一个覆盖索引是一个包含所有的,甚至更多的指标,您需要为您查询列.
例如,这个:
SELECT *
FROM tablename
WHERE criteria
Run Code Online (Sandbox Code Playgroud)
通常会使用索引来加快使用条件检索哪些行的分辨率,但随后它将转到完整表以检索行.
但是,如果索引包含列column1,column2和column3,那么这个sql:
SELECT column1, column2
FROM tablename
WHERE criteria
Run Code Online (Sandbox Code Playgroud)
并且,如果可以使用特定索引来加快要检索的行的分辨率,则索引已经包含您感兴趣的列的值,因此它不必转到表来检索行,但可以直接从索引生成结果.
如果您看到典型的查询使用1-2列来解析哪些行,然后通常添加另外1-2列,那么也可以使用它,附加那些额外的列可能是有益的(如果它们全部相同)到索引,以便查询处理器可以从索引本身获取所有内容.
这是一篇文章:索引覆盖提升了关于这个主题的SQL Server查询性能.
aku*_*aku 13
覆盖指数只是一个普通的指数.如果它能够满足查询而无需分析数据,那么它就被称为"覆盖".
例:
CREATE TABLE MyTable
(
ID INT IDENTITY PRIMARY KEY,
Foo INT
)
CREATE NONCLUSTERED INDEX index1 ON MyTable(ID, Foo)
SELECT ID, Foo FROM MyTable -- All requested data are covered by index
Run Code Online (Sandbox Code Playgroud)
这是从SQL Server检索数据的最快方法之一.