Share via


küme FORCEPLAN (Transact-SQL)

When FORCEPLAN is set to ON, the Microsoft SQL Server query optimizer processes a join in the same order as the tables appear in the FROM clause of a query.Buna ek olarak, FORCEPLAN ON olarak ayarlanması iç içe geçmiş bir döngü birleştirmek kullanımını birleşimlerin diğer türde bir sorgu planı oluşturmak için gerekli olan veya birleştirmek ipuçları veya sorgu ipuçları istenir'zorlar.

Topic link iconTransact-SQL sözdizimi kuralları

SET FORCEPLAN { ON | OFF }

Remarks

küme FORCEPLAN işlemek için sorgu iyileştiricisi tarafından kullanılan mantığı aslında geçersiz kılar bir Transact-SQL deyim. deyim ile döndürdü, bu ayar ne olursa olsun aynı veridir.Tek fark, yoludur SQL Server Tablo, sorgu gerçekleştirmek için işler.

Sorgu en iyi hale getirme ipuçları da sorgularda etkilemek için kullanılabilir nasıl SQL Server deyim işler.

küme FORCEPLAN yürütmek veya çalışma zamanı ve çözümleme saat uygulanır.

İzinler

küme FORCEPLAN tüm kullanıcılar için varsayılan izinleri.

Örnekler

Aşağıdaki örnek dört tablo birleştirmek gerçekleştirir.The SHOWPLAN_TEXT setting is enabled, so SQL Server returns information about how it is processing the query differently after the SET FORCE_PLAN setting is enabled.

USE AdventureWorks;
GO
-- Make sure FORCEPLAN is set to OFF.
SET SHOWPLAN_TEXT OFF;
GO
SET FORCEPLAN OFF;
GO
SET SHOWPLAN_TEXT ON;
GO
-- Example where the query plan is not forced.
SELECT c.LastName, c.FirstName, v.Name
FROM Person.Contact AS c
   INNER JOIN HumanResources.Employee AS e
   ON e.ContactID = c.ContactID
   INNER JOIN Purchasing.PurchaseOrderHeader AS poh
   ON e.EmployeeID = poh.EmployeeID
   INNER JOIN Purchasing.Vendor AS v
   ON poh.VendorID = v.VendorID;
GO
-- SET FORCEPLAN to ON.
SET SHOWPLAN_TEXT OFF;
GO
SET FORCEPLAN ON;
GO
SET SHOWPLAN_TEXT ON;
GO
-- Reexecute inner join to see the effect of SET FORCEPLAN ON.
SELECT c.LastName, c.FirstName, v.Name
FROM Person.Contact AS c
   INNER JOIN HumanResources.Employee AS e 
   ON e.ContactID = c.ContactID
   INNER JOIN Purchasing.PurchaseOrderHeader AS poh
   ON e.EmployeeID = poh.EmployeeID
   INNER JOIN Purchasing.Vendor AS v
   ON poh.VendorID = v.VendorID;
GO
SET SHOWPLAN_TEXT OFF;
GO
SET FORCEPLAN OFF;
GO