Översikt över exekveringsplan
gäller för:SQL Server
Azure SQL Database
Azure 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 åtTableA
, använda data frånTableA
för att extrahera matchande rader frånTableB
och sedan använda data frånTableB
för att extrahera data frånTableC
. De andra sekvenserna där databasservern kan komma åt tabellerna är:
TableC
,TableB
,TableA
eller
TableB
,TableA
,TableC
eller
TableB
,TableC
,TableA
eller
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 BY
kan 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
- ellerORDER BY
-sats och hur du filtrerar data, till exempel när du använder enWHERE
- ellerHAVING
-sats.
Relaterat innehåll
- Övervaka och finjustera prestanda
- Verktyg för prestandaövervakning och justering
- Arkitekturguide för frågebearbetning
- Statistik för livefrågor
- Aktivitetsövervakning
- Övervaka prestanda med hjälp av Query Store-
- sys.dm_exec_query_statistics_xml
- sys.dm_exec_query_profiles
- DBCC TRACEON – Spårningsflaggor (Transact-SQL)
- Logisk och fysisk showplan-operatorreferens
- infrastruktur för frågeprofilering
- Visa och spara körningsplaner
- Jämföra och analysera exekveringsplaner
- Planguider