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
Will sql server create any default non-clustered index? Should we really put all FK
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
No, SQL Server does not automatically create non-clustered indexes.
A clustered index is created automatically based on the primary key, unless your
CREATE TABLEstatement 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.