Aracılığıyla paylaş


set forceplan (Transact-SQL)

Açık, küme forceplan olduğunda SQL Server sorgu iyileştiricisi işlemleri bir ' % s'birleşim birleştirmek tabloları aynı sırada görünür from yan tümce sorgu.Buna ek olarak, forceplan on olarak ayarlanması iç içe döngülü birleştirmek kullanımı diğer tür birleşim bir sorgu planı oluşturmak için gerekli olan veya birleştirmek ipuçları veya sorgu ipuçları ile istediği sürece zorlar.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

SET FORCEPLAN { ON | OFF }

Açıklamalar

set forceplan aslında işlemek için ' % s'iyileştiricisi sorgu iyileştiricisi tarafından kullanılan mantığı geçersiz kılar bir Transact-SQL select deyim.select deyim tarafından döndürülen verileri bu ayardan bağımsız olarak aynıdır.Tek fark, yoludur SQL Server işlemler tablolara karşılamak sorgu.

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

set forceplan yürütmek sırasında uygulanan veya çalışma saat ve ayrıştırma saatzaman.

İzinler

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

Örnekler

Aşağıdaki örnek dört tablo birleştirmek gerçekleştirir.SHOWPLAN_TEXT Ayarı etkinleştirilmişse, bunu SQL Server nasıl sorgu işleme hakkında bilgi verir sonra farklı SET FORCE_PLAN ayarı etkinleştirilmişse.

USE AdventureWorks2008R2;
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