Overzicht van uitvoeringsplan
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Om query's uit te voeren, moet de SQL Server Database Engine de instructie analyseren om een efficiënte manier te bepalen om toegang te krijgen tot de vereiste gegevens en deze te verwerken. Deze analyse wordt verwerkt door een onderdeel met de naam Query Optimizer. De invoer voor queryoptimalisatie bestaat uit de query, het databaseschema (tabel- en indexdefinities) en de databasestatistieken. De Query Optimizer bouwt een of meer uitvoeringsplannen voor query's, ook wel queryplannen of uitvoeringsplannengenoemd. De Query Optimizer kiest een queryplan met behulp van een set heuristieken om de compilatietijd te verdelen en optimale planning te plannen om een goed queryplan te vinden.
Tip
Zie de secties SELECT-instructies optimaliseren en Cache en hergebruik van uitvoeringsplannen van de handleiding over de architectuur voor queryverwerking voor meer informatie over het verwerken van query’s en uitvoeringsplannen.
Zie Uitvoeringsplannen weergeven en opslaanvoor meer informatie over het weergeven van uitvoeringsplannen in SQL Server Management Studio en Azure Data Studio.
Een queryuitvoeringsplan is de definitie van:
De volgorde waarin de brontabellen worden geopend.
Normaal gesproken zijn er veel reeksen waarin de databaseserver toegang heeft tot de basistabellen om de resultatenset te bouwen. Als een
SELECT
instructie bijvoorbeeld verwijst naar drie tabellen, kan de databaseserver eerst toegang krijgen totTableA
, de gegevens uitTableA
gebruiken om overeenkomende rijen uitTableB
te extraheren en vervolgens de gegevens uitTableB
gebruiken om gegevens uitTableC
te extraheren. De andere reeksen waarin de databaseserver toegang heeft tot de tabellen, zijn:
TableC
,TableB
,TableA
of
TableB
,TableA
,TableC
of
TableB
,TableC
,TableA
of
TableC
,TableA
,TableB
De methoden die worden gebruikt om gegevens uit elke tabel te extraheren.
Over het algemeen zijn er verschillende methoden voor toegang tot de gegevens in elke tabel. Als er slechts een paar rijen met specifieke sleutelwaarden vereist zijn, kan de databaseserver een index gebruiken. Als alle rijen in de tabel vereist zijn, kan de databaseserver de indexen negeren en een tabelscan uitvoeren. Als alle rijen in een tabel vereist zijn, maar er een index is waarvan de sleutelkolommen zich in een
ORDER BY
bevinden, kan het uitvoeren van een indexscan in plaats van een tabelscan een afzonderlijke resultatenset opslaan. Als een tabel klein is, zijn tabelscans mogelijk de meest efficiënte methode voor bijna alle toegang tot de tabel.De methoden die worden gebruikt voor het berekenen van berekeningen en het filteren, aggregeren en sorteren van gegevens uit elke tabel.
Naarmate gegevens worden geopend vanuit tabellen, zijn er verschillende methoden om berekeningen uit te voeren op gegevens zoals scalaire waarden berekenen en gegevens te aggregeren en sorteren zoals gedefinieerd in de querytekst, bijvoorbeeld bij het gebruik van een
GROUP BY
- ofORDER BY
-component, en het filteren van gegevens, bijvoorbeeld wanneer u eenWHERE
- ofHAVING
-component gebruikt.
Verwante inhoud
- Prestaties bewaken en afstemmen op
- hulpprogramma's voor het bewaken en afstemmen van prestaties
- architectuurhandleiding voor queryverwerking
- Live-querystatistieken
- activiteitsmonitor
- Prestaties bewaken met behulp van de Query Store-
- sys.dm_exec_query_statistics_xml
- sys.dm_exec_query_profiles
- DBCC TRACEON - Traceringsvlagken (Transact-SQL)
- Logische en fysieke referenties van showplan-operatoren
- infrastructuur voor queryprofilering
- uitvoeringsplannen weergeven en opslaan
- uitvoeringsplannen vergelijken en analyseren
- Planhandleidingen