分享方式:


執行計畫概觀

適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體

為了能夠執行查詢,SQL Server 資料庫引擎必須分析陳述式來判斷存取必要資料及進行處理的有效方式。 這項分析會由稱為「查詢最佳化工具」的元件處理。 查詢最佳化工具的輸入是由查詢、資料庫結構描述 (資料表和索引定義) 以及資料庫統計資料所組成。 查詢最佳化工具會建置一或多個查詢執行計畫,有時稱為查詢計畫執行計畫。 查詢最佳化工具會使用一組啟發學習法來選擇查詢計畫,以平衡編譯時間和規劃最佳性,進而尋找良好查詢計畫。

提示

如需查詢處理與查詢執行計畫的詳細資訊,請參閱《查詢處理架構指南》的最佳化 SELECT 陳述式執行計畫快取與重複使用等章節。

如需在 SQL Server Management Studio 和 Azure Data Studio 中檢視執行計畫的相關資訊,請參閱顯示並儲存執行計畫

查詢執行計畫的定義是:

  • 存取來源資料表的順序。

    一般而言,資料庫伺服器存取基底資料表以建立結果集的順序有很多種。 例如,如果 SELECT 陳述式參考三個資料表,則資料庫伺服器可能會先存取 TableA、使用 TableA 中的資料來擷取 TableB 中相符資料列,然後使用 TableB 中的資料來擷取 TableC 中資料。 資料庫伺服器可以存取資料表的其他順序如下:
    TableCTableBTableA
    TableBTableATableC
    TableBTableCTableA
    TableCTableATableB

  • 用來從每個資料表擷取資料的方法。

    一般而言,有各種不同的方式可存取每個資料表中的資料。 如果僅需要特定索引鍵值的一些資料列,則資料庫伺服器可以使用索引。 如果需要資料表中的所有資料列,則資料庫伺服器可以忽略索引,並執行資料表掃描。 如果需要資料表中的所有資料列,但其中有一個索引的索引鍵資料行是在 ORDER BY中,那麼,執行索引掃描來替代資料表掃描,就能儲存個別結果集。 如果是小型資料表,則資料表掃描可能是所有資料表存取中最有效率的方法。

  • 用來計算計算,以及如何篩選、彙總及排序每個資料表中的資料的方法。

    從資料表存取資料時,有不同的方法可以針對資料執行計算 (例如計算純量值),以及彙總和排序查詢文字中定義的資料 (例如使用 GROUP BYORDER BY 子句時),以及如何篩選資料 (例如使用 WHEREHAVING 子句時)。