Transact-SQL 参考

SET FORCEPLAN

使 Microsoft® SQL Server™ 查询优化器以与 SELECT 语句的 FROM 子句中表出现的相同顺序来处理联接。

语法

SET FORCEPLAN { ON | OFF }

注释

SET FORCEPLAN 从本质上替代查询优化器处理 Transact-SQL SELECT 语句所使用的逻辑。SELECT 语句返回的数据同样与该设置无关。唯一的差别是 SQL Server 为满足查询对表进行处理的方式。

在查询中也可以使用查询优化器提示影响 SQL Server 处理 SELECT 语句的方式。

SET FORCEPLAN 的设置是在执行或运行时设置,而不是在分析时设置。

权限

SET FORCEPLAN 权限默认授予所有用户。

示例

下例在三个表之间执行联接。由于启用了 SHOWPLAN_TEXT 设置,所以 SQL Server 返回有关在启用 SET FORCE_PLAN 设置后如何以不同的方式处理查询的信息。

-- 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

请参见

SELECT

SET

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT