Vorgehensweise: Erstellen einer Planhinweisliste (SQL Server Management Studio)

In diesem Thema erfahren Sie, wie Sie eine Planhinweisliste mit SQL Server Management Studio erstellen können. Planhinweislisten beeinflussen die Abfrageoptimierung, indem Abfragehinweise oder ein fester Abfrageplan an die Abfragen angefügt werden. In der Planhinweisliste geben Sie die Transact-SQL-Anweisung an, die optimiert werden soll, sowie entweder eine OPTION-Klausel mit den zu verwendenden Abfragehinweisen oder einen spezifischen Abfrageplan, der für die Optimierung der Abfrage verwendet werden soll. Wenn die Abfrage ausgeführt wird, vergleicht der Abfrageoptimierer die Transact-SQL-Anweisung mit der Planhinweisliste und fügt der Abfrage entweder zur Laufzeit die OPTION-Klausel hinzu oder verwendet den angegebenen Abfrageplan.

Im folgenden Beispiel wird eine Planhinweisliste für eine Transact-SQL-Anweisung erstellt und der FORCESEEK-Abfragehinweis auf die Anweisung angewendet. Durch den Abfragehinweis wird der Abfrageoptimierer gezwungen, einen Indexsuchvorgang für den Zugriff auf die Daten in der angegebenen Tabelle zu verwenden.

So erstellen Sie eine Planhinweisliste - Beispiel

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz von Database Engine (Datenbankmodul) her, und erweitern Sie diese Instanz.

  2. Erweitern Sie Datenbanken, erweitern Sie die AdventureWorks2008R2-Datenbank, und erweitern Sie dann den Eintrag Programmierbarkeit.

  3. Klicken Sie mit der rechten Maustaste auf Planhinweislisten, und klicken Sie dann auf Neue Planhinweisliste.

  4. Geben Sie unter NameForceseekPlan als Namen für die Planhinweisliste ein.

  5. Geben Sie unter Anweisung die folgende Transact-SQL-Anweisung ein. Dies ist die Anweisung, auf die die Planhinweisliste angewendet werden soll.

    SELECT p.LastName, p.FirstName, HumanResources.Employee.JobTitle
    FROM HumanResources.Employee
    JOIN Person.Person AS p ON HumanResources.Employee.BusinessEntityID = p.BusinessEntityID
    WHERE HumanResources.Employee.OrganizationLevel = 3 ORDER BY p.LastName, p.FirstName
    
  6. Wählen Sie unter Bereichstyp die Option SQL als den Entitätstyp aus, mit dem die Transact-SQL-Anweisung angezeigt wird.

  7. Geben Sie unter Hinweise die folgende OPTION-Klausel ein:

    OPTION (TABLE HINT(HumanResources.Employee, FORCESEEK))
    
  8. Klicken Sie auf OK, um die Planhinweisliste zu erstellen.

So überprüfen Sie, ob die Planhinweisliste mit einer Abfrage verglichen wird

  1. Starten Sie eine SQL Server Profiler-Ablaufverfolgung, und stellen Sie dabei sicher, dass die Ereignistypen Plan Guide Successful und Plan Guide Unsuccessful (unter dem Knoten Leistung) ausgewählt sind.

  2. Führen Sie die in Schritt 5 der vorherigen Anleitung bereitgestellte Abfrage aus.

  3. Halten Sie die SQL Server Profiler-Ablaufverfolgung an.

  4. Suchen Sie nach dem Plan Guide Successful-Ereignis für die betreffende Abfrage.

  5. Falls der Abgleich zwischen Planhinweisliste und Abfrage nicht funktioniert, vergewissern Sie sich, dass die Abfrage Zeichen für Zeichen im selben Format, in dem sie in der Anweisung der Planhinweisliste angegeben wurde, bereitgestellt wird. Hierzu gehören auch Tabulatorzeichen, Leerzeichen, Wagenrückläufe und Zeilenvorschübe.