Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Planguider påverkar frågeoptimering genom att koppla frågetips eller en fast frågeplan till dem. I planguiden anger du den instruktion som du vill optimera och antingen en OPTION-sats som innehåller frågetips som du vill använda. eller en specifik frågeplan som du vill använda för att optimera frågan. När frågan körs jämför frågeoptimeraren Transact-SQL-instruktionen med planguiden och bifogar antingen OPTION-satsen till frågan vid körning eller använder den angivna frågeplanen.
En planguide tillämpar antingen en fast frågeplan och/eller frågetips på en fråga.
Begränsningar och restriktioner
Argumenten till sp_create_plan_guide måste anges i den ordning som visas. När du anger värden för parametrarna i sp_create_plan_guidemåste alla parameternamn anges explicit, eller inga alls. Om till exempel @name = anges måste @stmt = , @type =och så vidare också anges. På samma sätt, om @name = utelämnas och endast parametervärdet anges, måste även de återstående parameternamnen utelämnas och endast deras värden anges. Argumentnamn är endast i beskrivande syfte för att förstå syntaxen. SQL Server kontrollerar inte att det angivna parameternamnet matchar namnet på parametern i den position där namnet används.
Du kan skapa fler än ett OBJEKT eller EN SQL-planguide för samma fråga och batch eller modul. Det går dock bara att aktivera en planguide när som helst.
Planguider av typen OBJECT kan inte skapas för ett @module_or_batch värde som refererar till en lagrad procedur, funktion eller DML-utlösare som anger WITH ENCRYPTION-satsen eller som är tillfällig.
Att försöka släppa eller ändra en funktion, lagrad procedur eller DML-utlösare som refereras av en planguide, antingen aktiverad eller inaktiverad, orsakar ett fel. Att försöka ta bort en tabell som har en definierad trigger, och som refereras av en planguide, orsakar också ett fel.
Behörigheter
Om du vill skapa en planguide av typen OBJECT behöver du ALTER-behörighet för det refererade objektet. Om du vill skapa en planguide av typen SQL eller MALL behöver du ALTER-behörighet för den aktuella databasen.
Skapa en planguide med hjälp av SSMS
Klicka på plustecknet för att expandera databasen där du vill skapa en planguide och klicka sedan på plustecknet för att expandera mappen Programmability.
Högerklicka på mappen planguider och välj ny planguide....
I dialogrutan ny planguide i rutan Namn anger du namnet på planguiden.
I rutan Statement anger du det Transact-SQL-uttalande som planguiden ska tillämpas på.
I listan Omfångstyp väljer du den typ av entitet där Transact-SQL-instruktionen visas. Detta anger kontexten för att matcha Transact-SQL-instruktionen med planguiden. Möjliga värden är OBJECT, SQLoch TEMPLATE.
I rutan Scope batch anger du batchtexten i vilken Transact-SQL-satsen visas. Batchtexten kan inte innehålla en
USE
databas-instruktion. Batch--rutan Scope är endast tillgänglig när SQL- har valts som omfångstyp. Om inget anges i batchrutan för omfång när SQL är omfångstypen sätts värdet för batchtexten till samma värde som i rutan Statement.I listan Omfångsschemanamn anger du namnet på schemat där objektet finns. Rutan Omfångsschemanamn är endast tillgänglig när objekt har valts som omfångstyp.
I rutan Omfångsobjektnamn anger du namnet på den Transact-SQL lagrade proceduren, användardefinierad skalärfunktion, tabellvärdesfunktion för multistatement eller DML-utlösare där Transact-SQL-instruktionen visas. Den rutan "Omfångsobjektsnamn" är endast tillgänglig när Objekt har valts som omfångstyp.
I rutan Parametrar anger du parameternamnet och datatypen för alla parametrar som är inbäddade i Transact-SQL-instruktionen.
Parametrar gäller endast när något av följande är sant:
Omfångstypen är SQL eller TEMPLATE. Om MALLfår parametrarna inte vara NULL.
Transact-SQL-instruktionen skickas med hjälp av sp_executesql och ett värde för parametern anges, eller så skickar SQL Server internt en instruktion efter parameterändring.
I rutan Tips anger du frågetipsen eller frågeplanen som ska tillämpas på Transact-SQL-instruktionen. Ange en giltig OPTION-sats om du vill ange en eller flera frågetips.
Klicka på OK.
Skapa en planguide med T-SQL
I Object Exploreransluter du till en instans av databasmotorn.
I fältet Standard klickar du på Ny fråga.
Kopiera och klistra in följande exempel i frågefönstret och klicka på Kör.
-- creates a plan guide named Guide1 based on a SQL statement EXEC sp_create_plan_guide @name = N'Guide1', @stmt = N'SELECT TOP 1 * FROM Sales.SalesOrderHeader ORDER BY OrderDate DESC', @type = N'SQL', @module_or_batch = NULL, @params = NULL, @hints = N'OPTION (MAXDOP 1)';
Mer information finns i sp_create_plan_guide (Transact-SQL).