set forceplan (Transact-sql)

forceplan on olarak ayarlandığında SQL ServerDoktoru işler aynı sırada bir birleşim tabloların bir sorgunun from yan tümcesinde görünür sorgusu. Ayrıca forceplan on olarak ayarlanması iç içe döngü birleştirme kullanımı birleşimler başka türde bir sorgu planı oluşturmak için gereken veya birleştirme ipuçları veya sorgu ipuçları ile istendikleri sürece'zorlar.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

SET FORCEPLAN { ON | OFF }

Açıklamalar

set forceplan aslında bir geçersiz kılar işlemek için sorgu en iyi duruma getiricisi tarafından kullanılan mantığı bir Transact-SQLselect deyimi. select deyimi tarafından döndürülen verileri bu ayarlara bakılmaksızın aynıdır. Tek fark, bu şekilde olduğunu SQL Serversorgu karşılamak için tabloları işler.

Sorgu en iyi duruma getiricisi ipuçları da kullanılabilir sorgularda etkilemek için nasıl SQL Serverselect deyimi işler.

set forceplan yürütme veya çalışma süresi ve ayrıştırma zaman uygulanır.

İzinler

set forceplan tüm kullanıcılar için varsayılan izinleri.

Örnekler

Aşağıdaki örnek dört tabloları birleştirme gerçekleştirir. SHOWPLAN_TEXTAyarı etkinleştirilmişse, bu yüzden SQL Servernasıl sorgu işleme hakkında bilgi döndürür farklı sonra SET FORCE_PLANayarı etkinleştirilmişse.

USE AdventureWorks2012;
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 p.LastName, p.FirstName, v.Name
FROM Person.Person AS p
   INNER JOIN HumanResources.Employee AS e
   ON e.BusinessEntityID = p.BusinessEntityID
   INNER JOIN Purchasing.PurchaseOrderHeader AS poh
   ON e.BusinessEntityID = poh.EmployeeID
   INNER JOIN Purchasing.Vendor AS v
   ON poh.VendorID = v.BusinessEntityID;
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 p.LastName, p.FirstName, v.Name
FROM Person.Person AS p
   INNER JOIN HumanResources.Employee AS e 
   ON e.BusinessEntityID = p.BusinessEntityID
   INNER JOIN Purchasing.PurchaseOrderHeader AS poh
   ON e.BusinessEntityID = poh.EmployeeID
   INNER JOIN Purchasing.Vendor AS v
   ON poh.VendorID = v.BusinessEntityID;
GO
SET SHOWPLAN_TEXT OFF;
GO
SET FORCEPLAN OFF;
GO

USE AdventureWorks2012;
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 p.LastName, p.FirstName, v.Name
FROM Person.Person AS p
   INNER JOIN HumanResources.Employee AS e
   ON e.BusinessEntityID = p.BusinessEntityID
   INNER JOIN Purchasing.PurchaseOrderHeader AS poh
   ON e.BusinessEntityID = poh.EmployeeID
   INNER JOIN Purchasing.Vendor AS v
   ON poh.VendorID = v.BusinessEntityID;
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 p.LastName, p.FirstName, v.Name
FROM Person.Person AS p
   INNER JOIN HumanResources.Employee AS e 
   ON e.BusinessEntityID = p.BusinessEntityID
   INNER JOIN Purchasing.PurchaseOrderHeader AS poh
   ON e.BusinessEntityID = poh.EmployeeID
   INNER JOIN Purchasing.Vendor AS v
   ON poh.VendorID = v.BusinessEntityID;
GO
SET SHOWPLAN_TEXT OFF;
GO
SET FORCEPLAN OFF;
GO

Ayrıca bkz.

Başvuru

select (Transact-sql)

Deyimiyle (Transact-sql) bırak

set showplan_text (Transact-sql)

set showplan_text (Transact-sql)