Nee, SQL Server maakt niet automatisch niet-geclusterde indexen.
Een geclusterde index wordt automatisch gemaakt op basis van de primaire sleutel, tenzij uw CREATE TABLE
verklaring zegt iets anders.
Ja, ik zou aanraden om kolommen met vreemde sleutels te indexeren, omdat deze het meest waarschijnlijk worden JOIN'd/doorzocht met behulp van IN
, EXISTS
, enz. Houd er echter rekening mee dat een index op een reeks waarden met een lage kardinaliteit (bijvoorbeeld geslacht) relatief nutteloos is omdat er niet genoeg verschil in de waarden is.
De wisselwerking met alle indexen is dat ze het ophalen van gegevens kunnen versnellen, maar het invoegen/bijwerken/verwijderen van gegevens vertragen. Er is ook onderhoud dat moet worden uitgevoerd omdat ze gefragmenteerd kunnen raken (zoals harde schijven) maar ook na verloop van tijd niet kunnen wennen. Indexen nemen ook schijfruimte in beslag.