A coverage index is an index that contains everything and possibly more columns that you need for your query.
For example, this:
SELECT * FROM tablename WHERE criteria
Usually uses indexes to speed up the decision about which rows to retrieve using the criteria, but then it will go to the full table to retrieve the rows.
However, if the index contains columns column1, column2 and column3, then this sql:
SELECT column1, column2 FROM tablename WHERE criteria
and provided that a specific index can be used to speed up the resolution of the rows that will be retrieved, the index already contains the values of the columns of interest to you, so it will not need to go to the table to retrieve rows, but can output the results directly from the index.
This can also be used if you see that a typical query uses 1-2 columns to resolve these rows and then usually adds 1-2 more columns, it would be useful to add these additional columns (if they are the same as and all) to the index so that the query processor can get everything from the index itself.
Here's an article: Coverage of indexes improves SQL Server query performance on this.
Lasse Vågsæther Karlsen Sep 15 '08 at 10:51 2008-09-15 10:51
source share