Een nieuwe planhandleiding maken
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Plangidsen zijn van invloed op queryoptimalisatie door query-aanwijzingen of een vast queryplan er aan te koppelen. In de planhandleiding specificeert u de uitdrukking die u wilt optimaliseren en een keuze van een OPTION-component met de queryhints die u wilt gebruiken. of een specifiek queryplan dat u wilt gebruiken om de query te optimaliseren. Wanneer de query wordt uitgevoerd, stemt de queryoptimalisator de instructie Transact-SQL af op de plangids en koppelt de optieclausule aan de query tijdens de uitvoeringstijd of gebruikt het opgegeven queryplan.
Een planhandleiding past een vast queryplan en/of queryhints toe op een query.
Beperkingen en beperkingen
De argumenten voor sp_create_plan_guide moeten worden opgegeven in de volgorde die wordt weergegeven. Wanneer u waarden opgeeft voor de parameters van sp_create_plan_guide, moeten alle parameternamen expliciet of helemaal niet worden opgegeven. Als bijvoorbeeld @name = is opgegeven, moet @stmt =, @type =enzovoort ook worden opgegeven. Als @name = wordt weggelaten en alleen de parameterwaarde wordt opgegeven, moeten de resterende parameternamen eveneens worden weggelaten en alleen hun waarden opgegeven. Argumentnamen zijn alleen bedoeld voor beschrijvende doeleinden om inzicht te krijgen in de syntaxis. SQL Server controleert niet of de opgegeven parameternaam overeenkomt met de naam voor de parameter op de positie waar de naam wordt gebruikt.
U kunt meer dan één OBJECT- of SQL-planhandleiding maken voor dezelfde query en batch of module. Er kan echter maar één planhandleiding op een bepaald moment worden ingeschakeld.
Planhulplijnen van het type OBJECT kunnen niet worden gemaakt voor een @module_or_batch-waarde die verwijst naar een opgeslagen procedure, functie of DML-trigger die de WITH ENCRYPTION-component opgeeft of die tijdelijk is.
Als u een functie, opgeslagen procedure of DML-trigger probeert te verwijderen of wijzigen waarnaar wordt verwezen door een planhandleiding, ingeschakeld of uitgeschakeld, treedt er een fout op. Als u probeert een tabel te verwijderen waarop een trigger is gedefinieerd die ook door een plangids wordt verwezen, dan veroorzaakt dat ook een fout.
Machtigingen
Als u een planhandleiding van het type OBJECT wilt maken, hebt u de machtiging ALTER nodig voor het object waarnaar wordt verwezen. Als u een planhandleiding van het type SQL of template wilt maken, hebt u ALTER-machtiging nodig in de huidige database.
Een planhandleiding maken met behulp van SSMS
Klik op het plusteken om de database uit te vouwen waarin u een planhandleiding wilt maken en klik vervolgens op het plusteken om de map Programmeerbaarheid uit te vouwen.
Klik met de rechtermuisknop op de map Plan guides en selecteer Nieuwe planhandleiding....
Voer in het dialoogvenster Nieuwe planhandleiding in het vak Naam de naam van de plangids in.
Voer in het vak Verklaring de Transact-SQL verklaring in waarop de planhandleiding moet worden toegepast.
Selecteer in de lijst scopetype het type entiteit waarin de Transact-SQL-verklaring voorkomt. Hiermee geeft u de context op voor het koppelen van de Transact-SQL instructie aan de planhandleiding. Mogelijke waarden zijn OBJECT, SQLen TEMPLATE.
Voer in het Scope batch-vak de batchtekst in waarin de Transact-SQL-verklaring verschijnt. De batchtekst mag geen
USE
databaseverklaring bevatten. Het vak Batch- bereik is alleen beschikbaar wanneer SQL- is geselecteerd als een bereiktype. Als er niets wordt ingevoerd in het bereikbatchvak wanneer SQL het bereiktype is, wordt de waarde van de batchtekst ingesteld op dezelfde waarde als in het vak Instructie.Voer de naam in van het schema waarin het object zich bevindt in de schemanaam lijst. Het vak Schemanaam bereik is alleen beschikbaar wanneer Object is geselecteerd als een bereiktype.
Voer in het vak Bereikobjectnaam de naam in van de Transact-SQL opgeslagen procedure, door de gebruiker gedefinieerde scalaire functie, meerstaps tabelwaardefunctie of DML-trigger waarin de Transact-SQL-instructie verschijnt. Het vak Bereikobjectnaam is alleen beschikbaar wanneer Object als type bereik is geselecteerd.
Voer in het vak Parameters de parameternaam en het gegevenstype in van alle parameters die zijn ingesloten in de instructie Transact-SQL.
Parameters zijn alleen van toepassing wanneer een van de volgende waarden waar is:
Het bereiktype is SQL of sjabloon. Als sjabloon, mogen parameters niet NULL zijn.
De Transact-SQL-instructie wordt verzonden met behulp van sp_executesql en er wordt een waarde voor de parameter opgegeven, of SQL Server verzendt intern een instructie na het parameteriseren ervan.
Voer in het vak Hints de queryhints of het queryplan in die moeten worden toegepast op de Transact-SQL-instructie. Als u een of meer queryhints wilt opgeven, voert u een geldige OPTION-clausule in.
Klik op OK-.
Een planhandleiding maken met behulp van T-SQL
Maak in Objectverkennerverbinding met een instantie van de Database-Engine.
Klik op de standaardbalk op Nieuwe query.
Kopieer en plak het volgende voorbeeld in het queryvenster en klik op uitvoeren.
-- 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)';
Zie sp_create_plan_guide (Transact-SQL)voor meer informatie.