Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Amikor a FORCEPLAN ON-ra van állítva, az SQL Server lekérdezésoptimalizáló ugyanabban a sorrendben dolgozza fel a csatlakozást, ahogy a lekérdezés FROM záradékában megjelenő táblák jelennek meg. Ezen túlmenően, ha a FORCEPLAN ON-ra állítják, beágyazott loop csatlakozást kell alkalmazni, hacsak nem más típusú csatlakozások szükségesek a lekérdezés tervének megalkotásához, vagy csatlakozási vagy lekérdezési tippekkel kérik őket.
Transact-SQL szintaxis konvenciók
Szemantika
SET FORCEPLAN { ON | OFF }
Megjegyzések
A SET FORCEPLAN lényegében felülírja a lekérdezésoptimalizáló által használt logikát egy Transact-SQL SELECT utasítás feldolgozásához. A SELECT utasítás által visszaadott adatok ugyanazok, függetlenül attól, hogy ez a beállítás van. Az egyetlen különbség az, hogy az SQL Server hogyan dolgozza fel a táblákat, hogy kielégítse a lekérdezést.
Lekérdezésoptimalizáló tippek is használhatók lekérdezésekben annak befolyásolására, hogyan dolgozza fel az SQL Server a SELECT utasítást.
A SET FORCEPLAN végrehajtáskor vagy futásidőben történik, nem pedig parse időben.
Permissions
ÁLLÍTSD be a FORCEPLAN jogosultságokat alapértelmezés minden felhasználónak.
Példák
A következő példa négy tábla összekötését végzi. A SHOWPLAN_TEXT beállítás be van kapcsolva, így az SQL Server visszaadja az információt arról, hogyan dolgozza fel másképp a lekérdezést a beállítás SET FORCE_PLAN engedélyezése után.
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
Lásd még:
VÁLASZT (Transact-SQL)
SET-utasítások (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)
SET SHOWPLAN_TEXT (Transact-SQL)