我刚刚在一些数据库讨论中听到了涵盖索引这个术语——它是什么意思?
最佳答案
覆盖索引 是包含您查询所需的所有(可能更多)列的索引。
例如,这个:
SELECT *
FROM tablename
WHERE criteria
通常会使用索引来加快使用条件检索哪些行的分辨率,但随后它会转到整个表来检索行。
但是,如果索引包含列 column1、column2 和 column3,则此 sql:
SELECT column1, column2
FROM tablename
WHERE criteria
并且,如果特定索引可用于加快解析要检索的行,则该索引已经包含您感兴趣的列的值,因此它不必转到表中检索行,但可以直接从索引中生成结果。
如果您看到一个典型的查询使用 1-2 列来解析哪些行,然后通常添加另外 1-2 列,也可以使用它,附加这些额外的列可能是有益的(如果它们是完全相同)到索引,以便查询处理器可以从索引本身获取所有内容。
这是一个 article: Index Covering Boosts SQL Server Query Performance关于这个问题。
关于sql - 什么是涵盖索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62137/