Nej, SQL Server skapar inte automatiskt icke-klustrade index.
Ett klustrade index skapas automatiskt baserat på primärnyckeln, om inte din CREATE TABLE
uttalandet säger något annat.
Ja, jag skulle rekommendera att indexera kolumner för främmande nyckel eftersom dessa är mest sannolikt att JOIN's/söks mot att använda IN
, EXISTS
, etc. Tänk dock på att ett index på en uppsättning värden med låg kardinalitet (exempelvis kön) kommer att vara relativt värdelös eftersom det inte finns tillräckligt med skillnader i värdena.
Avvägningen med alla index är att de kan påskynda datahämtning, men sakta ner datainsättning/uppdatering/radering. Det finns också underhåll som måste utföras eftersom de kan bli fragmenterade (som hårddiskar) men kanske inte vänjer sig med tiden. Index tar också upp diskutrymme.