Dela via


Översikt över exekveringsplan

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

För att kunna köra frågor måste SQL Server Database Engine analysera -instruktionen för att fastställa ett effektivt sätt att komma åt nödvändiga data och bearbeta dem. Den här analysen hanteras av en komponent som kallas Frågeoptimerare. Indata till Frågeoptimeraren består av frågan, databasschemat (tabell- och indexdefinitioner) och databasstatistiken. Frågeoptimeraren skapar en eller flera frågekörningsplaner, som ibland även kallas frågeplaner eller körningsplaner. Frågeoptimeraren väljer en frågeplan med hjälp av en uppsättning heuristik för att balansera kompileringstid och planera optimalitet för att hitta en bra frågeplan.

Tips

Mer information om frågebearbetnings- och frågekörningsplaner finns i avsnitten Optimera SELECT-instruktioner och Cachelagring av körningsplan och återanvändning i arkitekturguiden för frågebearbetning.

Information om hur du visar körningsplaner i SQL Server Management Studio och Azure Data Studio finns i Visa och spara körningsplaner.

En frågekörningsplan är en definition av:

  • Sekvensen där källtabellerna används.

    Det finns vanligtvis många sekvenser där databasservern kan komma åt bastabellerna för att skapa resultatuppsättningen. Om en SELECT-instruktion till exempel refererar till tre tabeller kan databasservern först komma åt TableA, använda data från TableA för att extrahera matchande rader från TableBoch sedan använda data från TableB för att extrahera data från TableC. De andra sekvenserna där databasservern kan komma åt tabellerna är:
    TableC, TableB, TableAeller
    TableB, TableA, TableCeller
    TableB, TableC, TableAeller
    TableC, TableA, TableB

  • De metoder som används för att extrahera data från varje tabell.

    I allmänhet finns det olika metoder för att komma åt data i varje tabell. Om det bara krävs några rader med specifika nyckelvärden kan databasservern använda ett index. Om alla rader i tabellen krävs kan databasservern ignorera indexen och utföra en tabellgenomsökning. Om alla rader i en tabell krävs men det finns ett index vars nyckelkolumner finns i en ORDER BYkan du spara en separat resultatuppsättning om du utför en indexgenomsökning i stället för en tabellgenomsökning. Om en tabell är liten kan tabellgenomsökningar vara den mest effektiva metoden för nästan all åtkomst till tabellen.

  • De metoder som används för att beräkna beräkningar och hur du filtrerar, aggregerar och sorterar data från varje tabell.

    När data nås från tabeller finns det olika metoder för att utföra beräkningar över data, till exempel beräkning av skalära värden, och för att aggregera och sortera data enligt definitionen i frågetexten, till exempel när du använder en GROUP BY- eller ORDER BY-sats och hur du filtrerar data, till exempel när du använder en WHERE- eller HAVING-sats.