Delen via


Overzicht van uitvoeringsplan

van toepassing op:SQL ServerAzure SQL DatabaseAzure 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 tot TableA, de gegevens uit TableA gebruiken om overeenkomende rijen uit TableBte extraheren en vervolgens de gegevens uit TableB gebruiken om gegevens uit TableCte extraheren. De andere reeksen waarin de databaseserver toegang heeft tot de tabellen, zijn:
    TableC, TableB, TableAof
    TableB, TableA, TableCof
    TableB, TableC, TableAof
    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 BYbevinden, 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- of ORDER BY-component, en het filteren van gegevens, bijvoorbeeld wanneer u een WHERE- of HAVING-component gebruikt.