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.
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
Deyimiyle (Transact-sql) bırak