Nein, SQL Server erstellt nicht automatisch Non-Clustered-Indizes.
Ein Clustered-Index wird automatisch basierend auf dem Primärschlüssel erstellt, es sei denn, Ihr CREATE TABLE
Aussage sagt etwas anderes.
Ja, ich würde empfehlen, Fremdschlüsselspalten zu indizieren, da diese am wahrscheinlichsten mit IN
verknüpft/gesucht werden , EXISTS
usw. Beachten Sie jedoch, dass ein Index für Werte mit niedriger Kardinalität (z. B. Geschlecht) relativ nutzlos ist, da die Werte nicht ausreichend voneinander abweichen.
Der Kompromiss bei allen Indizes besteht darin, dass sie den Datenabruf beschleunigen, aber das Einfügen/Aktualisieren/Löschen von Daten verlangsamen können. Es gibt auch Wartungsarbeiten, die durchgeführt werden müssen, da sie fragmentiert werden können (wie Festplatten), aber im Laufe der Zeit möglicherweise nicht verwendet werden. Auch Indizes nehmen Speicherplatz in Anspruch.