Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Erstellt SQL Server standardmäßig einen nicht gruppierten Index für alle Spalten einer Tabelle?

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.