Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
FORCEPLAN ON olarak ayarlandığında, SQL Server sorgu optimizatoru bir katılımı sorgudaki FROM maddesinde görünen tablolarla aynı sırayla işler. Ayrıca, ON olarak ayarlandığında FORCEPLAN , sorgu için plan oluşturmak için başka tür birleştirmeler gerekmiyorsa veya birleştirme ipuçları veya sorgu ipuçları istenmedikçe iç içe döngü birleşimi kullanılmasını zorunlu kılar.
Transact-SQL söz dizimi kuralları
Sözdizimi
SET FORCEPLAN { ON | OFF }
Açıklamalar
SET FORCEPLAN esasen, sorgu optimizatorunun Transact-SQL SELECT ifadesini işlemek için kullandığı mantığı geçersiz kılar. SELECT ifadesi tarafından duygulanan veriler, bu ayar ne olursa olsun aynıdır. Tek fark, SQL Server'ın sorguyu karşılamak için tabloları işleme şeklidir.
Sorgu optimizer ipuçları, SQL Server'ın SELECT ifadesini nasıl işlediğini etkileyen sorgularda da kullanılabilir.
SET FORCEPLAN Uygulama veya çalışma zamanında uygulanır, ayrıştırma zamanında değil.
Permissions
SET FORCEPLAN Varsayılan olarak tüm kullanıcılara verilen izinler.
Örnekler
Aşağıdaki örnek dört tablodan oluşan bir birleşme gerçekleştirir. Ayar SHOWPLAN_TEXT etkinleştirildiğinde, SQL Server ayar etkinleştirildikten sonra sorguyu farklı SET FORCE_PLAN şekilde işlediğine dair bilgi döndürüyor.
USE AdventureWorks2022;
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.
SEÇ (Transact-SQL)
SET İfadeler (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)
SET SHOWPLAN_TEXT (Transact-SQL)