• One would think that using the index with most columns would minimize the risk of having to bookmark and use key lookup later in the execution plan.

    But on the other hand, SQL Server should be smart enough to see if the index with most columns does cover the query or not.

    If the index covers the query, use the index with less columns but still cover.

    If the index does not cover the query, then things get more complicated. Should the query engine then use the index with less columns (for faster processing) and make a key lookup at the clustered index?

    What if there is no clustered index?

    Well, you get the idea that there are many thing to consider. And for getting a Best Practice out of this, DBCC DROPCLEANBUFFERS and DBCC FREEPROCCACHE must be used to create a steady baseline for testing.

    Not something you would want to do in a production environment...


    N 56°04'39.16"
    E 12°55'05.25"