SQL-Server-Statistiken und Kardinalitätsschätzung
Der Optimierer wählt Joins, Zugriffsmethoden und Speicherzuteilungen anhand geschätzter Zeilenzahlen. Weichen Schätzungen stark ab, wird ein vernünftiger Plan teuer.
SQL-Server-Statistiken und Kardinalitätsschätzung
Der Optimierer wählt Joins, Zugriffsmethoden und Speicherzuteilungen anhand geschätzter Zeilenzahlen. Weichen Schätzungen stark ab, wird ein vernünftiger Plan teuer.
Was gemessen werden sollte
Vergleichen Sie geschätzte und tatsächliche Zeilen am ersten wichtigen Operator. Prüfen Sie Histogramm, Änderungszähler, Stichprobe, aufsteigende Schlüssel, korrelierte Prädikate und verdeckte Spaltenwerte.
Praktisches Vorgehen
Lassen Sie automatische Statistiken aktiv, aktualisieren Sie wichtige Statistiken bei relevanten Datenänderungen, verwenden Sie gefilterte oder mehrspaltige Statistiken für konkrete Schieflagen und schreiben Sie ungeeignete Prädikate um.
Was vermieden werden sollte
Führen Sie nicht jede Nacht für jede Statistik FULLSCAN aus, nehmen Sie nicht an, dass ein Index-Rebuild alle Statistiken aktualisiert, und überdecken Sie Fehler nicht nur mit Hinweisen.
Betriebliches Ergebnis
Statistikpflege sollte Datenänderungen und Lastempfindlichkeit folgen, nicht einem universellen Kalender.
Checkliste für die Produktion
Erfassen Sie eine Ausgangsbasis und definieren Sie die erwartete Verbesserung. Testen Sie mit repräsentativen Daten und realistischer Parallelität. Sichern Sie die ursprüngliche Einstellung oder den Plan, bereiten Sie einen Rollback vor und überwachen Sie die nächste normale Lastspitze.
Wenn Sie diese Methode auf eine konkrete SQL-Server-Umgebung anwenden möchten, nutzen Sie das Frageformular unten und nennen Sie SQL-Server-Version, Datenbankgröße, Lastprofil und bereits erfasste Nachweise.