none
Frage zum Ausführungsplan und einem Index-Vorschlag RRS feed

  • Frage

  • Hallo

    Ich bin jetzt nicht so der Datenbankspezialist - aber als Entwickler auch mal öfters die Aufgabe an einer Datenbank oder an einer SQL-Abfrage zu optimieren oder beschleunigen.

    Meine Frage daher - ich hab irgendwie in Erinnerung wenn zum Beispiel eine SQL-Abfrage mit dem tatsächlichen Ausführungsplan getestet wird, dass von diesem Ausführungsplan auch ggf. ein Vorschlag für einen Index kommt oder erstellt wird.

    Ich hatte mal solch ein Szenario vor langer Zeit - und bilde mir ein, aus diesen Ausführungsplänen dann verschiedene Indizes erstellt zu haben. Aber jetzt gelingt mir das nicht im SQL-Management-Studio.

    Stimmt meine Erinnerung - kann man so etwas irgendwo einstellen?

    Oder liege ich da vollkommen falsch......

    Vielleicht kann mir dazu bitte jemand weiterhelfen - Danke schon mal & schönen Gruß

    Michael


    Michael Erlinger

    Donnerstag, 27. September 2012 19:35

Antworten

Alle Antworten

  • Hallo Michael,

    ich habe dieses Feature IMHO erstmals mit SQL Server 2008 gesehen, zwischendurch hab ich es bei 2008 (ohne R2) aber irgendwann auch nicht wieder gefunden.

    Bei SQL Server 2008 R2 bietet das Management Studio über die Funktion "Geschätzten Ausführungsplan" anzeigen bzw. "Tatsächlichen Ausführungsplan einschließen" ab und an (IMHO recht sporadisch) einen Hinweis zur Performanceoptimierung inkl. Möglichkeit zur Übernahme des empfohlenden SQL Statements für die Erzeugung des Index an.

    Einstellen lässt sich das IIRC nicht, entweder meint das SSMS, es müsste das anzeigen oder halt eben nicht :) Wann genau aber nun eine Indexempfehlung angezeigt wird und wann nicht, kann ich dir nicht sagen. Wenn ich bspw. auf eine Tabelle mit ein paar 100.000 Datensätzen eine Abfrage absetze, die definitiv (auch lt. Ausführungsplan) einen Fulltable Scan macht, wird mir kein Index empfohlen. Füge ich per Join noch eine weitere Tabelle hinzu, schon. (Für die Spalte, die in der Where Clause den Fulltable Scan auslöst).

    Das Feature an sich ist sicher nett, falls sich aber jemand findet, der einem sagen kann, wann genau da im SSMS was wie angezeigt wird, wäre das sehr hilfreich :)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 27. September 2012 20:08
    Moderator
  • Hallo Michael & Stefan,

    siehe MSDN Finding Missing Indexes => "About the Missing Indexes Feature", dort stehen zumindest ein paar Sätze dazu.

    Die Informationen kann man auch über die (nicht persistierten!) DMVs sys.dm_db_missing_index... sowie über die gespeicherten Ausführungspläne abfragen, ich hatte dafür mal SQL Abfragen im TechNet ScriptCenter erstellt:

    Missing indexes with CREATE statement for it
    Get all SQL Statements with missing indexes and their cached query plans

    Siehe auch Using Missing Index Information to Write CREATE INDEX Statements

    Aber auch hier gilt wie beim DTA = Database Tuning Advisor, das man nicht unbedingt jeden vorgeschlagenen Index ungeprüft & unbedacht anlegen sollte, da werden mitunter Indizes vorgeschlagen, die von den INCLUDE Columns leicht übertrieben sind.


    Olaf Helper

    Blog Xing

    • Als Antwort vorgeschlagen Uwe RickenMVP Freitag, 28. September 2012 08:32
    • Als Antwort markiert M.Erlinger Freitag, 28. September 2012 08:56
    Freitag, 28. September 2012 04:54