共用方式為


直接執行

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

直接執行是執行語句的最基本方式。 應用程式會建置包含 Transact-SQL 語句的字元字串,並使用 SQLExecDirect 函式提交它以供執行。 當語句到達伺服器時,SQL Server 會將它編譯成執行計劃,然後立即執行執行計劃。

直接執行通常是由在運行時間建置和執行語句的應用程式使用,而且是一次執行之語句最有效率的方法。 其缺點是,每次執行 SQL 語句時,都必須剖析和編譯 SQL 語句,這會在語句執行多次時增加額外負荷。

SQL Server 可大幅改善多用戶環境中常見執行語句的直接執行效能,並使用 SQLExecDirect 搭配常用 SQL 語句的參數標記,可接近備妥的執行效率。

連線到 SQL Server 實例時,SQL Server Native Client ODBC 驅動程式會使用 sp_executesql 來傳輸 SQLExecDirect指定的 SQL 語句或批次。 SQL Server 有邏輯可快速判斷使用 sp_executesql 執行的 SQL 語句或批次是否符合產生記憶體中已存在的執行計劃的語句或批次。 如果進行比對,SQL Server 只會重複使用現有的計劃,而不是編譯新的計劃。 這表示,在具有許多用戶的系統中,以 SQLExecDirect 執行的常用 SQL 語句,將受益於許多只有舊版 SQL Server 中預存程式可用的計劃重複使用優點。

只有在數個使用者執行相同的 SQL 語句或批次時,重複使用執行計劃的好處才有效。 請遵循這些編碼慣例來增加不同用戶端所執行 SQL 語句的機率,足以重複使用執行計劃:

  • 請勿在 SQL 語句中包含數據常數;請改用系結至程序變數的參數標記。 如需詳細資訊,請參閱 Using Statement Parameters

  • 使用完整物件名稱。 如果物件名稱不合格,則不會重複使用執行計劃。

  • 讓應用程式連線盡可能使用一組常見的連接和語句選項。 對於具有一組選項的連線所產生的執行計劃(例如ANSI_NULLS),不會針對具有另一組選項的連線重複使用。 SQL Server Native Client ODBC 驅動程式和 SQL Server Native Client OLE DB 提供者對於這些選項都有相同的默認設定。

如果使用 SQLExecDirect 執行的所有語句都是使用這些慣例進行編碼,SQL Server 可以在發生商機時重複使用執行計劃。

另請參閱

執行語句 (ODBC)