Ausführungspläne
Ein Ausführungsplan zeigt, wie SQL Server eine Abfrage abarbeitet: welche Indizes er nutzt, wo er ganze Tabellen liest, wo Zeilen sortiert werden. NovaSql zeigt Pläne grafisch an und sagt konkret, was auffällt.
Zwei Arten von Plänen
- Geschätzter Plan: Schaltfläche in der Werkzeugleiste. SQL Server plant die Abfrage, ohne sie auszuführen. Gut für teure Abfragen und für
UPDATE/DELETE, die nichts verändern sollen. - Plan einbeziehen: Schalter in der Werkzeugleiste. Ist er an, liefert die nächste Ausführung zusätzlich den tatsächlichen Plan, mit echten Zeilenzahlen und Ausführungen pro Operator.
Der Plan erscheint im Ergebnisbereich im Tab Plan. Bei mehreren Statements gibt es je Statement einen Abschnitt mit dessen Kosten.
Diagramm
Das Diagramm zeigt die Operatoren als Kästen, verbunden durch Pfeile. Mausrad zoomt, Ziehen verschiebt, Zurücksetzen stellt die Ansicht wieder her.
Ein Klick auf einen Operator öffnet die Details: Objekt, geschätzte und tatsächliche Zeilen, Ausführungen, Operator- und Subtree-Cost, Anteil an den Gesamtkosten, Warnungen und alle Attribute.
Baum
Derselbe Plan als eingerückte Liste. Praktisch bei sehr großen Plänen.
Vorschläge
NovaSql untersucht den Plan und listet die Befunde, jeweils mit Schweregrad:
| Befund | Bedeutung |
|---|---|
| Fehlender Index empfohlen | SQL Server schätzt, dass ein Index die Abfrage deutlich beschleunigt. Das fertige CREATE INDEX lässt sich kopieren. |
| Implizite Typkonvertierung | CONVERT_IMPLICIT verhindert vermutlich einen Index-Seek. Datentypen angleichen oder explizit konvertieren. |
| Teurer Scan | Ein Scan macht mehr als 20 % der Kosten aus. Ein passender Index könnte Seek statt Scan ermöglichen. |
| Key/RID Lookup | Der genutzte Index deckt nicht alle Spalten ab. Ein Covering-Index mit INCLUDE kann das beheben. |
| Warnungen eines Operators | Was SQL Server selbst im Plan meldet, etwa ein Spill nach tempdb oder ein Join ohne Join-Bedingung. |
| Schätzfehler | Geschätzte und tatsächliche Zeilen weichen mehr als zehnfach ab. Häufig sind veraltete Statistiken der Grund: UPDATE STATISTICS prüfen. |
Schätzfehler und tatsächliche Zahlen gibt es nur mit Plan einbeziehen, nicht beim geschätzten Plan.
Ein vorgeschlagener Index ist ein Hinweis, kein Befehl. Vor dem Anlegen prüfen, ob es schon einen ähnlichen Index gibt: jeder Index kostet Speicher und bremst Schreibzugriffe.
XML
Der Plan im Rohformat. XML kopieren legt ihn in die Zwischenablage. Als .sqlplan-Tab öffnet ihn in einem Query-Tab; über Speichern unter entsteht eine .sqlplan-Datei, die sich auch im SQL Server Management Studio öffnen lässt.