Mittwoch, Dezember 05, 2012

Häufige Problemquellen für Zugriffspläne im SQL Server

Joe Sack liefert im SQLPerformance.com-Blog eine Liste mit zehn Gründen für suboptimale Ausführungspläne im SQL Server, die letztlich - wie bei Oracle - vor allem mit falschen cardinalities zusammenhängen. Die Liste enthält:
  • fehlende oder veraltete Statistiken
  • nicht repräsentative Samples bei der Statistikerfassung (data skew)
  • Korrelation von Spaltenwerten: dagegen helfen im SQL Server multi-column stats (im Fall von Oracle: extended stats)
  • intra-table column comparisions, die man durch vorberechnete Spalten ersetzen kann/sollte
  • Verwendung von table variables (deren cardinality immer 1 ist - klingt problematisch, aber um das genauer einordnen zu können, müsste ich eine klarere Vorstellung von der Rolle von table variables haben)
  • Funktionen (multi-statement table-valued and scalar)
  • Datentypen (also vor allem implizite Typ-Konvertierungen)
  • komplexe Prädikate
  • komplexe Queries
  • verteilte Queries (mit remote-Zugriff)
Ich will die Unterschiede nicht marginalisieren, aber grundsätzlich sähe eine entsprechende Aufstellung für Oracle durchaus ähnlich aus.

Keine Kommentare:

Kommentar veröffentlichen