Range queries with covering indexes

Range queries using covering indexes perform very well because:

Both nonclustered indexes and clustered indexes on data-only-locked tables have a leaf level above the data level, so they can provide index covering.

The cost of using a covering index is determined by:

This formula shows the costs:

Leaf pages = Number of qualified rows / Leaf level rows per pageCovered scan cost = Number of index levels * 18 + (Leaf pages /Pages per IO) * Cluster adjustment * 18 + Number of index levels * 2 + Leaf pages * 2

For example, if a query needs to read 1,200 leaf pages, and there are 40 rows per leaf-level page, the query needs to read 30 leaf-level pages. If large I/O can be used, this requires 4 I/Os. If inserts have caused page splits on the index leaf-level, the cluster adjustment increases the estimated number of large I/Os.