Refer to the holy book
SQL Server Books Online
and you shall find the answer
But what you won't find in there is the overloading the index with a non predicate column...this allows sql to just use the index, and not have to make another trip to the data page for every row that satisfies the result...
Did that from DB2 days...don'y know if it's documented, but it's an easy concept to grab...the less work you make for sql server the faster it'ss be...so if all it needs to use is the index, the faster the select.
Trade offs, always trade offs though..means more overhead on INSERTS and updates..
Covered queries can improve performance. Covered queries are queries where all the columns specified in the query are contained within the same index. For example, a query retrieving columns a and b from a table that has a composite index created on columns a, b, and c is considered covered. Creating indexes that cover a query can improve performance because all the data for the query is contained within the index itself; only the index pages, not the data pages, of the table must be referenced to retrieve the data, thereby reducing overall I/O. Although adding columns to an index to cover queries can improve performance, maintaining the extra columns in the index incurs update and storage costs.