• Creating a non-clustered index containing all columns makes no sense. If you create a clustered index on a table, then technically you already have an index that covers all columns. If someone requests that you index every column in a table, then just nod your head, smile, and tell them it's covered. 😉

    When I create a table, I typically create a clustered index on a single column containing a unique sequentially incremented identifier (transaction_time or an identity). Then I create a non-clustered index on some combination of columns that make up the natural primary key (ex: customer_id + phone_number). This typically facilitates 90% of all the join operations.

    It's a waste of resources to creating special indexes upfront on columns like unit_price, employee_gender, or street_address based on the assumption that the application just might need them one day.

    "Do not seek to follow in the footsteps of the wise. Instead, seek what they sought." - Matsuo Basho