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.