Nej, SQL Server opretter ikke automatisk ikke-klyngede indekser.
Et klyngeindeks oprettes automatisk baseret på den primære nøgle, medmindre din CREATE TABLE
erklæring siger noget andet.
Ja, jeg vil anbefale at indeksere fremmednøglekolonner, fordi disse er mest sandsynligt, at de bliver JOIN'd/søgt mod ved hjælp af IN
, EXISTS
, osv. Vær dog opmærksom på, at et indeks på et sæt værdier med lav kardinalitet (f.eks. køn) vil være relativt ubrugeligt, fordi der ikke er nok forskel på værdierne.
Afvejningen med alle indekser er, at de kan fremskynde datahentning, men bremse indsættelse/opdatering/sletning af data. Der er også vedligeholdelse, der skal udføres, fordi de kan blive fragmenteret (som harddiske), men måske også ikke bliver brugt over tid. Indekser optager også drevplads.