• I already posted the comment that was here once I checked, but dissapeared in the meantime.

    Anyway, I like the article, it is pretty good beginners guide to index design.

    However, I dissagree with next point:

    • If a column in a table is not at least 80 - 85% unique values, then most likely the SQL Server Query Optimizer will not use a non-clustered index based on that column.

    For example: index on column gender with values ‘M’, ‘F’, and NULL is not a subject for the index creation. The same rule can be applied to the flag and status columns with 5-6 different values.

    Index usefulness doesn't depend on number of possible values. Instead data distribution and query usage pattern should be considered. For example:

    If military database is frequently searched for females (let's say lest then 5% soldiers are females) index on gender column may be used. Also, condition Status = "in process" in order processing system would benefit from index on Status column even if there are only a few possible statuses.