2

Will sql server create any default non-clustered index? Should we really put all FK as non-clustered index? What is the trade-off here

1 Answer 1

10

No, SQL Server does not automatically create non-clustered indexes.
A clustered index is created automatically based on the primary key, unless your CREATE TABLE statement says otherwise.

Yes, I would recommend indexing foreign key columns because these are the most likely to be JOIN'd/searched against using IN, EXISTS, etc. However, be aware that an index on a low cardinality set of values (gender for example) will be relatively useless because there's not enough difference in the values.

The trade-off with all indexes is that they can speed up data retrieval, but slow down data insertion/updating/deletion. There's also maintenance that needs to be performed because they can get fragmented (like hard drives) but also might not get used over time. Indexes also take up drive space.

Sign up to request clarification or add additional context in comments.

2 Comments

thanks...What happens if there is non-clustered key and no non-clustered key on FK that i am using it to join with the child table. What scan does it use? Full, Index seek and Index scan?
Depends on the query, the index, the table statistics & the optimizer -- it means looking at the explain plan.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.