67

データベースの議論でカバード インデックスという用語を聞いたことがありますが、これはどういう意味ですか?

4

4 に答える 4

59

カバリング インデックスは、クエリに必要なすべての列、場合によってはそれ以上の列を含むインデックスです。

たとえば、これは次のとおりです。

SELECT *
FROM tablename
WHERE criteria

通常、 index を使用して、criteriaを使用して取得する行の解決を高速化しますが、その後、完全なテーブルに移動して行を取得します。

ただし、インデックスに列column1、column2、およびcolumn3が含まれている場合、次の sql:

SELECT column1, column2
FROM tablename
WHERE criteria

また、特定のインデックスを使用して取得する行の解決を高速化できる場合、インデックスには目的の列の値が既に含まれているため、行を取得するためにテーブルに移動する必要はありません、ただし、インデックスから直接結果を生成できます。

これは、典型的なクエリが 1 ~ 2 列を使用してどの行を解決し、通常は別の 1 ~ 2 列を追加することがわかっている場合にも使用できます。これらの余分な列を追加すると有益な場合があります (それらがすべて同じである場合)。 ) をインデックスに追加して、クエリ プロセッサがインデックス自体からすべてを取得できるようにします。

ここに記事があります: Index Covering Boosts SQL Server Query Performance on the subject。

于 2008-09-15T10:51:35.253 に答える
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

これは、SQL サーバーからデータを取得する最速の方法の 1 つです。

于 2008-09-15T10:52:54.563 に答える