• It'd be nice if there were a mention of optimizing bookmark lookups instead of just elimination.  A narrow index often will produce rows much faster than even a clustered index--especially when seeking on wide tables.  Likewise covering too many columns slows index performance. 

    An alternative is to put narrow non-clustered indexes on separate spindles.  This helps immensely, especially when the results must have too many columns to cover--just put join and predicate columns in the non-clustered index, and be sure it's on separate spindles than the data.