使 Microsoft® SQL Server™ 查詢優(yōu)化器以與 SELECT 語句的 FROM 子句中表出現(xiàn)的相同順序來處理聯(lián)接。
SET FORCEPLAN { ON | OFF }
SET FORCEPLAN 從本質(zhì)上替代查詢優(yōu)化器處理 Transact-SQL SELECT 語句所使用的邏輯。SELECT 語句返回的數(shù)據(jù)同樣與該設(shè)置無關(guān)。唯一的差別是 SQL Server 為滿足查詢對表進(jìn)行處理的方式。
在查詢中也可以使用查詢優(yōu)化器提示影響 SQL Server 處理 SELECT 語句的方式。
SET FORCEPLAN 的設(shè)置是在執(zhí)行或運(yùn)行時(shí)設(shè)置,而不是在分析時(shí)設(shè)置。
SET FORCEPLAN 權(quán)限默認(rèn)授予所有用戶。
下例在三個(gè)表之間執(zhí)行聯(lián)接。由于啟用了 SHOWPLAN_TEXT 設(shè)置,所以 SQL Server 返回有關(guān)在啟用 SET FORCE_PLAN 設(shè)置后如何以不同的方式處理查詢的信息。
-- SET SHOWPLAN_TEXT to ON.
SET SHOWPLAN_TEXT ON
GO
USE pubs
GO
-- Inner join.
SELECT a.au_lname, a.au_fname, t.title
FROM authors a INNER JOIN titleauthor ta
ON a.au_id = ta.au_id INNER JOIN titles t
ON ta.title_id = t.title_id
GO
-- SET FORCEPLAN to ON.
SET FORCEPLAN ON
GO
-- Reexecute inner join to see the effect of SET FORCEPLAN ON.
SELECT a.au_lname, a.au_fname, t.title
FROM authors a INNER JOIN titleauthor ta
ON a.au_id = ta.au_id INNER JOIN titles t
ON ta.title_id = t.title_id
GO
SET SHOWPLAN_TEXT OFF
GO
SET FORCEPLAN OFF
GO
相關(guān)文章