如何:建立計畫指南 (SQL Server Management Studio)

此主題描述如何使用 SQL Server Management Studio 來建立計畫指南。計畫指南是將查詢提示或固定的查詢計畫附加至查詢,藉以影響查詢的最佳化。在計畫指南中,指定您要最佳化的 Transact-SQL 陳述式或包含您想要使用的查詢提示的 OPTION 子句,或者是您想要用來將查詢進行最佳化的特定查詢計畫。執行查詢時,查詢最佳化工具會比對 Transact-SQL 陳述式與計畫指南,然後在執行階段中,將 OPTION 子句附加至查詢或使用指定的查詢計畫。

下列範例會針對 Transact-SQL 陳述式建立計畫指南,然後將 FORCESEEK 查詢提示套用至此陳述式。這個查詢提示會強制最佳化工具使用索引搜尋作業來存取指定之資料表內的資料。

建立計畫指南範例

  1. 在 [物件總管] 中,連接到 Database Engine 的執行個體,然後展開該執行個體。

  2. 依序展開 [資料庫]、AdventureWorks2008R2 資料庫,以及 [可程式性]

  3. 以滑鼠右鍵按一下 [計畫指南],然後按一下 [新增計畫指南]

  4. [名稱] 中,輸入 ForceseekPlan 當做計畫指南的名稱。

  5. [陳述式] 中,輸入下列 Transact-SQL 陳述式。這是套用計畫指南所依據的陳述式。

    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. [範圍類型] 中,選取 [SQL] 當做 Transact-SQL 陳述式要顯示在其中的實體類型。

  7. [提示] 中,輸入下列的 OPTION 子句。

    OPTION (TABLE HINT(HumanResources.Employee, FORCESEEK))
    
  8. 若要建立計畫指南,請按一下 [確定]

確認計畫指南能夠配合查詢

  1. 啟動 SQL Server Profiler 追蹤,並確定已選取 [Plan Guide Successful][Plan Guide Unsuccessful] 事件類型 (位於 [效能] 節點底下)。

  2. 執行上一個程序之步驟 5 中提供的查詢。

  3. 暫停 SQL Server Profiler 追蹤。

  4. 針對受影響的查詢,找出 Plan Guide Successful 事件。

  5. 如果計畫指南無法配合查詢,請確定提供的查詢與計畫指南陳述式中指定的查詢採用相同的格式 (逐字元)。這包括定位點、空格、歸位字元或換行字元。