Panoramica del piano di esecuzione
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Per poter eseguire le query, il motore di database SQL Server deve analizzare l'istruzione per determinare il modo più efficiente di accedere ai dati necessari e processarli. Questa analisi viene gestita da un componente denominato Query Optimizer. I dati di input per Query Optimizer sono costituiti dalla query, dallo schema del database (definizioni di tabella e indice) e dalle statistiche del database. Query Optimizer compila uno o più piani di esecuzione di query, a volte definiti piani di query o piani di esecuzione. Query Optimizer sceglie un piano di query usando un set di euristiche per bilanciare il tempo di compilazione e pianificare l'ottimalità per trovare un piano di query valido.
Suggerimento
Per altre informazioni sull'elaborazione delle query e sui piani di esecuzione delle query, vedere le sezioni Ottimizzazione delle istruzioni SELECT e Memorizzazione nella cache e riutilizzo del piano di esecuzione della Guida sull'architettura di elaborazione delle query.
Per informazioni sulla visualizzazione dei piani di esecuzione in SQL Server Management Studio e Azure Data Studio, vedere Visualizzare e salvare i piani di esecuzione.
Il piano di esecuzione di una query è costituito dalla definizione di:
La sequenza di accesso alle tabelle di origine.
In genere il server di database può utilizzare molte sequenze diverse per accedere alle tabelle di base e quindi compilare il set di risultati. Ad esempio, se un'istruzione
SELECT
fa riferimento a tre tabelle, il server di database può accedere innanzitutto aTableA
, usare i dati diTableA
per estrarre le righe corrispondenti daTableB
, quindi usare i dati diTableB
per estrarre i dati daTableC
. Di seguito vengono indicate le altre sequenze di accesso alle tabelle utilizzabili dal server di database:
TableC
,TableB
,TableA
o
TableB
,TableA
,TableC
o
TableB
,TableC
,TableA
o
TableC
,TableA
,TableB
I metodi usati per estrarre i dati da ogni tabella.
Per accedere ai dati di ogni tabella sono in genere disponibili metodi diversi. Se sono necessarie solo alcune righe con valori di chiave specifici, il server di database può utilizzare un indice. Se sono necessarie tutte le righe della tabella, il server di database può ignorare gli indici ed eseguire un'analisi di tabella. Se sono necessarie tutte le righe di una tabella, ma l'indice contiene colonne chiave incluse in una clausola
ORDER BY
, è consigliabile eseguire l'analisi dell'indice anziché della tabella per evitare che il set di risultati venga salvato separatamente. Se una tabella è di dimensioni ridotte, l'analisi della tabella potrebbe rappresentare il metodo più efficiente per quasi tutti gli accessi alla tabella.I metodi usati per eseguire i calcoli e i modi usati per filtrare, aggregare e ordinare i dati da ogni tabella.
Se si accede ai dati dalle tabelle, è possibile usare metodi diversi per eseguire i calcoli sui dati, ad esempio il calcolo dei valori scalari, per aggregare e ordinare i dati come definito nel testo della query, ad esempio quando si usa una clausola
GROUP BY
oORDER BY
, e per filtrare i dati, ad esempio quando si usa una clausolaWHERE
oHAVING
.
Contenuto correlato
- Monitoraggio e ottimizzazione delle prestazioni
- Strumenti per il monitoraggio e l'ottimizzazione delle prestazioni
- Guida sull'architettura di elaborazione delle query
- Statistiche sulle query dinamiche
- Monitoraggio attività
- Monitorare le prestazioni tramite Query Store
- sys.dm_exec_query_statistics_xml
- sys.dm_exec_query_profiles
- DBCC TRACEON - Flag di traccia (Transact-SQL)
- Guida di riferimento per operatori showplan fisici e logici
- Infrastruttura di profilatura query
- Visualizzare e salvare piani di esecuzione
- Confrontare e analizzare i piani di esecuzione
- Guide di piano