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

So entscheiden Sie, wann der Index für die Tabellenspalte verwendet wird

Im Allgemeinen würde meine Indizierungsstrategie in etwa so aussehen (ich verwende im Moment ausschließlich SQL Server - passen Sie sie bei Bedarf an Ihr eigenes Datenbanksystem an):

  • Wählen Sie ein gutes aus Clustering-Schlüssel - keine GUID, kein VARCHAR(250) oder so - ein gutes Clustering-Schlüssel ist eng, einzigartig, stabil, ständig steigend - so etwas wie eine INT IDENTITY ist perfekt. Macht dies zu Ihrem geclusterten Primärschlüssel -> gibt Ihnen Ihren ersten Index für die Tabelle

  • Fügen Sie für jede Spalte, die als Fremdschlüssel in einer anderen Tabelle verwendet wird, einen Index hinzu. Es kann sich entweder um einen Index mit einer einzelnen Spalte oder um einen zusammengesetzten Index handeln, je nachdem, was für Ihren Fall am besten geeignet ist. Es ist wichtig, dass die Fremdschlüsselspalte die erste ist Spalte in diesem Index (wenn Sie einen zusammengesetzten Index verwenden) - andernfalls die Vorteile für JOIN 's oder zum Prüfen der referentiellen Integrität stehen Ihrem System nicht zur Verfügung

Und das war's für jetzt.

Dann:Lassen Sie Ihr System laufen - beobachten und messen Sie - legen Sie eine Basislinie fest. Ist die App schnell genug? Wenn ja -> fertig - geh nach Hause und genieße deine Freizeit.

Wenn nicht:Dann sammeln Sie Daten und Hinweise, warum die App nicht schnell genug ist. Schau dir z.B. Dinge wie die DMVs in SQL Server, die Sie über die Abfragen mit der schlechtesten Leistung informieren, oder die fehlende Index-DMV . Analysieren Sie diese. Sehen Sie, was Sie verbessern könnten. Fügen Sie jeweils einen Index hinzu und noch einmal:beobachten, messen, mit Ihrer Basislinie vergleichen.

Wenn Sie eine Verbesserung haben -> lassen Sie diesen Index an Ort und Stelle und diese Messung ist Ihre neue Basislinie. Spülen und wiederholen, bis Sie (und Ihre Nutzer) mit der Leistung der App zufrieden sind (und dann geh nach Hause und genieße deine Freizeit).

Eine Überindizierung in SQL Server kann schlimmer sein als keine Indizes zu haben. Beginnen Sie nicht mit zu vielen Indizes! Stellen Sie nur gut fest Clustered PK und Foreign Key Nonclustered Indizes - das ist alles - dann beobachten, messen, optimieren und wiederholen Sie diesen Zyklus.



No