Condividi tramite


Guida di riferimento a operatori Showplan logici e fisici

Gli operatori descrivono come SQL Server esegue una query o un'istruzione DML (Data Manipulation Language). In Query Optimizer gli operatori consentono di compilare un piano di query per ottenere i risultati specificati nella query o per eseguire l'operazione specificata nell'istruzione DML. Il piano di query è un albero composto da operatori fisici È possibile visualizzare il piano di query usando le istruzioni SET SHOWPLAN, le opzioni del piano di esecuzione grafico in SQL Server Management Studio o le classi di evento SQL Server Profiler Showplan.

Gli operatori sono suddivisi in operatori logici e fisici.

Operatori logici
Gli operatori logici descrivono l'operazione algebrica relazionale utilizzata per elaborare un'istruzione, ovvero descrivono a livello concettuale quale operazione deve essere eseguita.

Operatori fisici
Gli operatori fisici implementano l'operazione descritta dagli operatori logici. Ogni operatore fisico è un oggetto o una routine che esegue un'operazione. Alcuni operatori fisici, ad esempio, accedono alle colonne o alle righe di una tabella, di un indice o di una vista, mentre altri eseguono operazioni diverse, ad esempio calcoli, aggregazioni, controlli di integrità dei dati o creazione di join. Gli operatori fisici possono influire sulle prestazioni.

Dopo essere stati inizializzati, gli operatori fisici raccolgono dati e quindi vengono chiusi. Un operatore fisico risponde alle tre chiamate di metodo seguenti:

  • Init() : con la chiamata del metodo Init() un operatore fisico si autoinizializza e imposta le strutture di dati necessarie. Sebbene l'operatore fisico possa ricevere molte chiamate Init() , in genere ne riceve una sola.

  • GetNext() : con la chiamata del metodo GetNext() un operatore fisico recupera la prima riga di dati oppure la successiva. L'operatore fisico può ricevere più chiamate GetNext() oppure nessuna.

  • Close() : con la chiamata del metodo Close() un operatore fisico esegue alcune operazioni di eliminazione e viene quindi chiuso automaticamente. Un operatore fisico riceve una sola chiamata del metodo Close() .

Il metodo GetNext() restituisce una riga di dati e il numero di chiamate ricevute viene visualizzato come ActualRows nell'output Showplan generato usando SET STATISTICS PROFILE ON o SET STATISTICS XML ON. Per altre informazioni su queste opzioni SET, vedere SET STATISTICS PROFILE (Transact-SQL) e SET STATISTICS XML (Transact-SQL).

I conteggi ActualRebinds e ActualRewinds visualizzati nell'output Showplan fanno riferimento al numero di chiamate al metodo Init() . A meno che un operatore non sia nel lato interno di un join ciclico, ActualRebinds è uguale a uno e ActualRewinds è uguale a zero. Se un operatore si trova nel lato interno di un join ciclico, la somma del numero delle associazioni e dei ripristini dovrebbe essere pari al numero delle righe elaborate nel lato esterno del join. Una riassociazione significa che uno o più parametri correlati del join sono stati modificati e che è necessario rivalutare il lato interno. Un ripristino significa che nessuno dei parametri correlati è stato modificato e che è possibile riutilizzare il set di risultati interno precedente.

ActualRebinds e ActualRewinds sono inclusi nell'output Showplan XML generato utilizzando SET STATISTICS XML ON. Vengono popolati solo per gli operatori Spool dell'indice non cluster, , Remote QueryRow Count Spool, Sort, Table Spool e Table-valued Function . ActualRebinds e ActualRewinds possono essere popolati anche per gli Assertoperatori Filter e quando l'attributo StartupExpression è impostato su TRUE.

Quando ActualRebinds e ActualRewinds sono inclusi in uno Showplan XML, sono confrontabili con EstimateRebinds e EstimateRewinds. Quando non sono presenti, il numero di righe stimato (EstimateRows) è confrontabile con il numero effettivo di righe (ActualRows). Si noti che nell'output grafico effettivo Showplan viene visualizzato zero per le riassociazioni e i ripristini effettivi quando non presenti.

Un contatore correlato, ActualEndOfScans, è disponibile solo quando l'output Showplan viene generato utilizzando SET STATISTICS XML ON. Ogni volta che un operatore fisico raggiunge la fine del proprio flusso di dati, il contatore viene incrementato di uno. Un operatore fisico può raggiungere la fine del proprio flusso di dati, zero, una o più volte. Come per riassociazioni e ripristini, il numero di analisi terminate può essere maggiore di uno se l'operatore si trova nel lato interno di un join ciclico. Il numero di analisi terminate dovrebbe essere minore o uguale alla somma del numero di riassociazioni e ripristini.

Mapping di operatori logici e fisici

In Query Optimizer viene creato un piano di query che consiste in un albero di operatori logici. Dopo la creazione del piano, viene scelto l'operatore fisico più efficiente per ogni operatore logico. L'operatore fisico che implementerà un operatore logico viene individuato in base al costo.

In genere un'operazione logica può essere implementata da più operatori fisici. In alcuni casi rari tuttavia anche un operatore fisico può implementare più operazioni logiche.

Descrizioni dell'operatore

In questa sezione vengono descritti gli operatori fisici e logici.

Icona del piano di esecuzione grafico Operatore Showplan Descrizione
nessuno Aggregate L'operatore Aggregate calcola il valore di un'espressione che include MIN, MAX, SUM, COUNT o AVG. Aggregate può essere un operatore logico o fisico.
dell'operatore espressione aritmeticaIcona dell'operatoreIcona Arithmetic Expression L'operatore Arithmetic Expression calcola un nuovo valore da valori esistenti in una riga. Arithmetic Expressionnon viene usato in SQL Server 2014.
Icona dell'operatore AssertIcona dell'operatore Assert Assert L'operatore Assert verifica una condizione, ad esempio convalida l'integrità referenziale oppure verifica che una sottoquery scalare restituisca una riga. Per ogni riga di input, l'operatore Assert valuta l'espressione nella Argument colonna del piano di esecuzione. Se questa espressione restituisce NULL, la riga viene passata tramite l'operatore Assert e l'esecuzione della query procede. Se l'operazione restituisce un valore non NULL, verrà generato l'errore appropriato. Assert è un operatore fisico.
Icona Assegna elemento linguaIcona Assign L'operatore Assign assegna il valore di un'espressione o di una costante a una variabile. Assign è un elemento di linguaggio.
nessuno Asnyc Concat L'operatore Asnyc Concat viene utilizzato solo nelle query remote (query distribuite) È caratterizzato da n nodi figlio e un nodo padre. Alcuni nodi figlio sono normalmente computer remoti che partecipano a una query distribuita. Asnyc Concat invia chiamate open() simultanee a tutti i figli e quindi applica una mappa di bit a ogni figlio. Per ogni bit che corrisponde a 1, Async Concat invia le righe di output al nodo padre su richiesta.
Icona dell'operatore Bitmap icona dell'operatore Bitmap Bitmap SQL Server usa l'operatore per implementare il Bitmap filtro bitmap nei piani di query paralleli. Il filtro bitmap accelera l'esecuzione delle query eliminando le righe con valori chiave che non possono produrre record di join prima di passare righe tramite un altro operatore, ad esempio l'operatore Parallelism . Un filtro bitmap utilizza una rappresentazione compatta di un set di valori da una tabella in una parte dell'albero dell'operatore per filtrare le righe da una seconda tabella in un'altra parte dell'albero. Rimuovendo le righe non necessarie quanto prima nella query, gli operatori successivi hanno meno righe su cui lavorare e le prestazioni complessive della query migliorano. Query Optimizer determina quando un bitmap è sufficientemente selettivo per essere utile e a quali operatori il filtro viene applicato. Bitmap è un operatore fisico.
Icona dell'operatore Bitmap icona dell'operatore Bitmap Bitmap Create L'operatore Bitmap Create è visualizzato nell'output Showplan in cui vengono compilate le mappe di bit. Bitmap Create è un operatore logico.
Icona dell'operatore Bookmark Lookup icona dell'operatore Bookmark Lookup L'operatore Bookmark Lookup utilizza un segnalibro (ID di riga o chiave di clustering) per cercare la riga corrispondente nella tabella o nell'indice cluster. La Argument colonna contiene l'etichetta del segnalibro utilizzata per cercare la riga nella tabella o nell'indice cluster. La Argument colonna contiene anche il nome della tabella o dell'indice cluster in cui viene cercata la riga. Se la clausola WITH PREFETCH viene visualizzata nella Argument colonna, Query Processor ha determinato che è ottimale usare la prelettura asincrona (read-ahead) durante la ricerca di segnalibri nella tabella o nell'indice cluster.

Bookmark Lookupnon viene usato in SQL Server 2014. Clustered Index Seek e RID Lookup consentono invece di eseguire la ricerca tramite segnalibro. Tale funzionalità è supportata inoltre dall'operatore Key Lookup.
nessuno Branch Repartition In un piano di query parallele sono presenti talvolta regioni concettuali di iteratori. È possibile eseguire tutti gli iteratori all'interno di tale regione mediante thread paralleli. Le regioni devono invece essere eseguite in modalità seriale. Alcuni iteratori Parallelism all'interno di una singola regione sono denominati Branch Repartition. L'operatore Parallelism al confine tra due regioni di questo tipo viene denominato Segment Repartition. Branch Repartition e Segment Repartition sono operatori logici.
nessuno Broadcast Broadcast ha un nodo figlio e n nodi padre. Broadcast invia le proprie righe di input a più consumer su richiesta. Ogni consumer riceve tutte le righe. Ad esempio, se tutti i consumer rappresentano i lati di un hash join, verranno compilate n copie delle tabelle hash.
Icona dell'operatore hash compilare l'icona dell'operatore Build Hash Indica la compilazione di una tabella hash in batch per un indice columnstore con ottimizzazione per la memoria xVelocity.
nessuno Cache Cache è una versione specializzata dell'operatore Spool . che consente di archiviare solo una riga di dati. Cache è un operatore logico. Cachenon viene usato in SQL Server 2014.
Icona dell'operatore di eliminazione dell'indice cluster Clustered Index Delete L'operatore Clustered Index Delete elimina righe dall'indice cluster specificato nella colonna dell'argomento del piano di esecuzione della query. Se nella colonna dell'argomento è presente un predicato WHERE(), vengono eliminate solo le righe conformi al predicato.Clustered Index Delete è un operatore fisico.
Icona dell'operatore di inserimento dell'indice cluster Clustered Index Insert L'operatore Showplan Clustered Index Insert consente di inserire le righe dell'input generato nell'indice cluster specificato nella colonna Argument. La colonna Argument include inoltre il predicato SET:(), il quale indica il valore su cui è impostata ogni colonna. Se Clustered Index Insert non ha elementi figlio per i valori di inserimento, la riga inserita viene presa dall'operatore Insert stesso.Clustered Index Insert è un operatore fisico.
Operatore di merge dell'indice cluster Clustered Index Merge L'operatore Clustered Index Merge applica un flusso di dati di unione a un indice cluster. L'operatore elimina, aggiorna o inserisce righe dall'indice cluster specificato nella Argument colonna dell'operatore. L'operazione effettiva eseguita dipende dal valore di runtime della colonna ACTION specificata nella Argument colonna dell'operatore. Clustered Index Merge è un operatore fisico.
Icona dell'operatore di Clustered Index Scan L'operatore Clustered Index Scan esegue l'analisi dell'indice cluster specificato nella colonna Argument del piano di esecuzione della query. In presenza di un predicato facoltativo WHERE:(), vengono restituite solo le righe conformi al predicato. Se la colonna Argomento include la clausola ORDERED, Query Processor ha richiesto la restituzione dell'output delle righe nell'ordine utilizzato dall'indice cluster. Se la clausola ORDERED non è presente, il motore di archiviazione esegue l'analisi dell'indice in modo ottimale, senza necessariamente ordinare l'output. Clustered Index Scan è un operatore logico e fisico.
Icona dell'operatore Ricerca indice Clustered Index Seek L'operatore Clustered Index Seek utilizza le funzionalità di ricerca degli indici per recuperare righe da un indice cluster. La Argument colonna contiene il nome dell'indice cluster usato e il predicato SEEK:(). Il motore di archiviazione utilizza l'indice per elaborare soltanto le righe conformi al predicato SEEK:(). Può inoltre includere un predicato WHERE:() in cui il motore di archiviazione valuta tutte le righe che sono conformi al predicato SEEK:(). Si tratta però di un predicato facoltativo, che non utilizza gli indici per completare l'elaborazione.

Se la colonna contiene la Argument clausola ORDER, il processore di query ha determinato che le righe devono essere restituite nell'ordine in cui è stato ordinato l'indice cluster. Se la clausola ORDERED non è presente, il motore di archiviazione esegue la ricerca nell'indice in modo ottimale, senza necessariamente ordinare l'output. Il mantenimento dell'ordinamento dell'output può dare come risultato un livello di efficienza minore rispetto alla restituzione di output non ordinato. Quando viene visualizzata la parola chiave LOOKUP, è in esecuzione una ricerca tramite segnalibro. In SQL Server 2008 e versioni successive, l'operatore Key Lookup fornisce funzionalità di ricerca dei segnalibri. Clustered Index Seek è un operatore logico e fisico.
Icona dell'operatore di aggiornamento dell'indice cluster Clustered Index Update L'operatore Clustered Index Update aggiorna le righe di input nell'indice Argument cluster specificato nella colonna. Se è presente un predicato WHERE:(), vengono aggiornate solo le righe che soddisfano questo predicato. Se è stato specificato un predicato SET:(), ogni colonna aggiornata viene impostata su tale valore. Se è disponibile un predicato DEFINE:(), vengono elencati i valori definiti da tale operatore. Un riferimento a tali valori può essere presente nella clausola SET o altrove nell'operatore o nella query. Clustered Index Update è un operatore logico e fisico.
Icona dell'operatore Comprimi operatore Comprimere l'icona dell Collapse L'operatore Collapse ottimizza l'elaborazione degli aggiornamenti. Quando si esegue un aggiornamento, è possibile suddividerlo in un'operazione di eliminazione e un'operazione di inserimento tramite l'operatore Split. La Argument colonna contiene una clausola GROUP BY:() che specifica un elenco di colonne chiave. Se in Query Processor vengono rilevate righe adiacenti che eliminano e inseriscono gli stessi valori chiave, queste operazioni separate vengono sostituite con una singola operazione di aggiornamento più efficiente. Collapse è un operatore logico e fisico.
Analisi dell'indice Columnstore columnstore Columnstore Index Scan L'operatore Columnstore Index Scan analizza l'indice columnstore specificato nella Argument colonna del piano di esecuzione della query.
Icona dell'operatore scalare di calcolo Icona dell'operatore scalare Compute Scalar L'operatore Compute Scalar valuta un'espressione per produrre un valore scalare calcolato. Tale valore può essere restituito all'utente e/o utilizzato come riferimento in altre parti della query, ad esempio in un predicato di filtro o di join. Compute Scalar è un operatore logico e fisico.

Compute Scalar gli operatori visualizzati in Showplans generati da SET STATISTICS XML potrebbero non contenere l'elemento RunTimeInformation . In showplan grafici, righe effettive, rebindseffettivi e riavvolgi effettivi potrebbero essere assenti dalla finestra Proprietà quando l'opzione Includi piano di esecuzione effettivo è selezionata in SQL Server Management Studio. Questo indica che, sebbene questi operatori fossero utilizzati nel piano di query compilato, la loro funzione è stata svolta da altri operatori nel piano di query di run-time. Si noti inoltre che il numero di esecuzioni nell'output di Showplan generato da SET STATISTICS PROFILE equivale alla somma di riassociazioni e ripristini in Showplan generati da SET STATISTICS XML.
Icona dell'operatore concatenazione Concatenation L'operatore Concatenation esegue l'analisi di più input e restituisce ogni riga sottoposta ad analisi. La concatenazione viene in genere usata per implementare il costrutto Transact-SQL UNION ALL. L'operatore fisico Concatenation prevede uno o più input e un output e copia le righe dal primo flusso di input nel flusso di output, quindi ripete l'operazione per ogni flusso di input aggiuntivo. Concatenation è un operatore logico e fisico.
Icona dell'operatore di analisi costante Icona dell'operatore Constant Scan L'operatore Constant Scan introduce una o più righe costanti in una query. Un Compute Scalar operatore viene spesso usato dopo un Constant Scan oggetto per aggiungere colonne a una riga prodotta dall'operatore Constant Scan .
Icona dell'elemento Convert (Motore di database) Convert L'operatore Convert converte un tipo di dati scalare in un altro. Convert è un elemento di linguaggio.
nessuno Cross Join L'operatore Cross Join crea un join tra ogni riga del primo input (superiore) e ogni riga del secondo input (inferiore). Cross Join è un operatore logico.
Icona dell'operatore cursore catchall catchall L'icona generica viene visualizzata quando la logica che produce Showplan grafici non è in grado di individuare un'icona appropriata per l'iteratore. L'icona generica non indica necessariamente una condizione di errore. Sono disponibili tre icone catchall: blu (per iteratori), arancione (per i cursori) e verde (per gli elementi del linguaggio Transact-SQL).
nessuno Cursore Gli operatori logici e fisici Cursor consentono di descrivere le modalità di esecuzione di una query o di un aggiornamento che implicano operazioni con i cursori. Gli operatori fisici descrivono l'algoritmo di implementazione fisica utilizzato per l'elaborazione del cursore, ad esempio l'utilizzo di un cursore gestito da keyset. Ogni passaggio dell'esecuzione di un cursore implica un operatore fisico. Gli operatori logici descrivono una proprietà del cursore, ad esempio la proprietà di sola lettura.

Gli operatori logici includono Asynchronous, Optimistic, Primary, Read Only, Scroll Locks e Secondary and Synchronous,

mentre quelli fisici includono Dynamic, Fetch Query, Keyset, Population Query, Refresh Query e Snapshot.
Dichiarare l'icona dell'elemento Declare L'operatore Declare alloca una variabile locale nel piano di query. Declare è un elemento di linguaggio.
Icona dell'operatore Delete (Motore di database) Elimina Delete L'operatore Delete elimina da una riga di oggetto che soddisfa il predicato facoltativo nella Argument colonna.
Icona Elimina operatore di analisi Elimina icona dell'operatore Deleted Scan L'operatore Deleted Scan esegue l'analisi della tabella eliminata all'interno di un trigger.
nessuno Distinct L'operatore Distinct rimuove i duplicati da un set di righe o da una raccolta di valori. Distinct è un operatore logico.
nessuno Distinct Sort L'operatore Distinct Sort logico analizza l'input, rimuovendo duplicati e ordinando in base alle colonne specificate nel predicato DISTINCT ORDER BY:() della Argument colonna. Distinct Sort è un operatore logico.
Icona dell'operatore parallelismo distribuisci flussi parallelismi Distribute Streams L'operatore Distribute Streams viene utilizzato esclusivamente in piani di query parallele. L'operatore Distribute Streams elabora un singolo flusso di input di record e produce più flussi di output. Il contenuto e il formato del record non vengono modificati. Ogni record del flusso di input appare in uno dei flussi di output. L'operatore mantiene automaticamente l'ordine relativo dei record di input nei flussi di output. In genere, l'appartenenza di un record di input a un flusso di output viene determinata tramite un'operazione di hashing.

Se l'output è partizionato, la Argument colonna contiene un predicato PARTITION COLUMNS:() e le colonne di partizionamento. Distribute Streams è un operatore logico.
Icona dell'operatore cursore dinamico Icona dell'operatore cursore dinamico Dynamic L'operatore Dynamic utilizza un cursore che può visualizzare tutte le modifiche apportate da altri utenti.
Icona dell'operatore Eager Spool L'operatore Eager Spool accetta l'intero input, archiviando ogni riga in un oggetto temporaneo nascosto archiviato nel tempdb database. Se l'operatore viene riavvertita (ad esempio, da un Nested Loops operatore), ma non è necessario ribindare i dati, i dati di spooling vengono usati anziché eseguire nuovamente la scalabilità dell'input. Se è necessario ripetere l'associazione, i dati di spooling vengono eliminati e l'oggetto di spooling viene ricompilato tramite una nuova analisi dell'input riassociato. L'operatore Eager Spool compila il proprio file di spooling nel modo seguente. Quando l'operatore principale dello spooling richiede la prima riga, l'operatore di spooling utilizza tutte le righe dal proprio operatore di input e le archivia nello spooling. Eager Spool è un operatore logico.
Icona dell'operatore del cursore di query recupera l'icona dell'operatore Fetch Query L'operatore Fetch Query recupera le righe quando viene eseguita un'operazione di recupero in un cursore.
Icona dell'operatore Filter (Motore di database) Filter Filter L'operatore Filtro analizza l'input, restituendo solo le righe che soddisfano l'espressione Argument di filtro (predicato) visualizzata nella colonna.
nessuno Flow Distinct L'operatore logico Flow Distinct esegue l'analisi dell'input e rimuove i valori duplicati. Mentre l'operatore utilizza tutti gli input prima di produrre qualsiasi output, l'operatore DistinctFlowDistinct restituisce ogni riga ottenuta dall'input (a meno che tale riga non sia un duplicato, nel qual caso viene rimosso).
nessuno Full Outer Join L'operatore logico Full Outer Join restituisce ogni riga che soddisfa il predicato di join del primo input (superiore) con ogni riga del secondo input (inferiore). L'operatore restituisce inoltre:

\- Righe del primo input senza corrispondenze nel secondo input.

\- Righe del secondo input senza corrispondenze nel primo input.



L'input che non include valori corrispondenti viene restituito come valore Null. Full Outer Join è un operatore logico.
Icona Dell'operatore di parallelismo raccogliere flussi parallelismo Raccogliere l'icona dell'operatore Gather Streams L'operatore logico Gather Streams viene utilizzato esclusivamente in piani di query paralleli. Tale operatore elabora vari flussi di input e quindi produce un unico flusso di output di record derivati dalla combinazione dei flussi di input. Il contenuto e il formato del record non vengono modificati. Se l'operatore prevede l'ordinamento, è necessario che tutti i flussi di input siano ordinati. Se l'output è ordinato, la Argument colonna contiene un predicato ORDER BY:() e i nomi delle colonne ordinate. Gather Streams è un operatore logico.
Icona dell'operatore di corrispondenza hash dell'operatore Hash Match L'operatore Hash Match compila una tabella hash calcolando un valore hash per ogni riga dall'input di compilazione. Un predicato HASH:() con un elenco di colonne usate per creare un valore hash viene visualizzato nella Argument colonna. Per ogni riga probe, quando applicabile, viene calcolato un valore hash (tramite la stessa funzione di hashing) e quindi vengono cercate corrispondenze nella tabella hash. Se un predicato residuo è presente (identificato da RESIDUAL:() nella Argument colonna, tale predicato deve essere soddisfatto anche per le righe da considerare una corrispondenza. Il funzionamento dipende dell'operazione logica eseguita:

Per tutti i join, il primo input (superiore) viene utilizzato per la compilazione della tabella hash e il secondo input (inferiore) per l'esecuzione del probe nella tabella hash. L'output delle corrispondenze (o delle mancate corrispondenze) viene eseguito in base a quanto previsto dal tipo di join. Se più join utilizzano la stessa colonna di join, le operazioni sono raggruppate in un gruppo di hash.

Per gli operatori Distinct o Aggregate l'input viene utilizzato per la compilazione della tabella hash (con rimozione dei duplicati e calcolo di eventuali espressioni di aggregazione). Quando viene creata la tabella hash, vengono eseguiti l'analisi della tabella e il successivo output di tutte le voci.

Per l'operatore Union, il primo input viene utilizzato per la compilazione della tabella hash (con rimozione dei duplicati). Il secondo input (che non deve includere duplicati) viene utilizzato per l'esecuzione del probe della tabella hash, seguita dalla restituzione di tutte le righe senza corrispondenze, dall'analisi della tabella hash e infine dalla restituzione di tutte le voci.



Hash Match è un operatore fisico.
Se l'icona dell'elemento If L'operatore If esegue un'elaborazione condizionale basata su un'espressione. If è un elemento di linguaggio.
nessuno Inner Join L'operatore logico Inner Join restituisce ogni riga che soddisfa il join del primo input (superiore) con il secondo input (inferiore).
Icona dell'operatore Inserisci (Motore di database) Inserisci Insert L'operatore Insert logico inserisce ogni riga dal relativo input all'oggetto Argument specificato nella colonna. L'operatore fisico è l'operatore Table Insert, Index Insert o Clustered Index Insert.
Icona dell'operatore di analisi inserita Icona dell'operatore di Inserted Scan L'operatore Inserted Scan esegue l'analisi della tabella inserted . Inserted Scan è un operatore logico e fisico.
Icona elemento del linguaggio intrinseco Icona elemento Linguaggio intrinseco Intrinsic L'operatore Intrinsic richiama una funzione Transact-SQL interna. Intrinsic è un elemento di linguaggio.
Icona dell'operatore Catchall iterator Iterator L'icona generica per Iterator viene visualizzata quando la logica che produce Showplan grafici non è in grado di individuare un'icona appropriata per l'iteratore. L'icona generica non indica necessariamente una condizione di errore. Sono disponibili tre icone catchall: blu (per iteratori), arancione (per i cursori) e verde (per costrutti del linguaggio Transact-SQL).
Icona dell'operatore di ricerca segnalibro Icona di Key Lookup L'operatore Key Lookup è una ricerca segnalibro in una tabella con un indice cluster. La Argument colonna contiene il nome dell'indice cluster e la chiave di clustering usata per cercare la riga nell'indice cluster. Key Lookup è sempre accompagnato da un Nested Loops operatore. Se la clausola WITH PREFETCH viene visualizzata nella Argument colonna, il processore di query ha determinato che è ottimale usare il prefeting asincrono (read-ahead) durante la ricerca di segnalibri nell'indice cluster.

L'uso di un operatore in un Key Lookup piano di query indica che la query potrebbe trarre vantaggio dall'ottimizzazione delle prestazioni. Le prestazioni della query, ad esempio, potrebbero essere migliorate con l'aggiunta di un indice di copertura.
Icona dell'operatore cursore keyset del Keyset L'operatore Keyset utilizza un cursore in grado di riconoscere gli aggiornamenti ma non gli inserimenti eseguiti da altri.
Language catchall Icona Language catchall icona catchallElemento Language Element L'icona generica per Language Element viene visualizzata quando la logica che produce Showplan grafici non è in grado di individuare un'icona appropriata per l'iteratore. L'icona generica non indica necessariamente una condizione di errore. Sono disponibili tre icone catchall: blu (per iteratori), arancione (per i cursori) e verde (per costrutti del linguaggio Transact-SQL).
Icona dell'operatore Lazy Spool L'operatore logico Lazy Spool archivia ogni riga dal relativo input in un oggetto temporaneo nascosto archiviato nel tempdb database. Se l'operatore viene riavvertita (ad esempio, da un Nested Loops operatore), ma non è necessario ribindare i dati, i dati di spooling vengono usati anziché eseguire nuovamente la scalabilità dell'input. Se è necessario ripetere l'associazione, i dati di spooling vengono eliminati e l'oggetto di spooling viene ricompilato tramite una nuova analisi dell'input riassociato. L'operatore Lazy Spool compila il file di spooling con un'elaborazione lenta: ogni volta che l'operatore padre dello spooling richiede una riga, anziché elaborare contemporaneamente tutte le righe, l'operatore di spooling ottiene una riga dal relativo operatore di input e la archivia nel file di spooling. Lazy Spool è un operatore logico.
nessuno Left Anti Semi Join L'operatore Left Anti Semi Join restituisce ogni riga del primo input (superiore) alla quale non corrisponde nessuna riga del secondo input (inferiore). Se non esiste alcun predicato join nella Argument colonna, ogni riga è una riga corrispondente. Left Anti Semi Join è un operatore logico.
nessuno Left Outer Join L'operatore Left Outer Join restituisce ogni riga che soddisfa il join del primo input (superiore) con il secondo input (inferiore). L'operatore restituisce inoltre ogni riga del primo input alla quale non corrisponde una riga nel secondo input. Le righe senza corrispondenza nel secondo input vengono restituite come valori Null. Se non esiste alcun predicato join nella Argument colonna, ogni riga è una riga corrispondente. Left Outer Join è un operatore logico.
nessuno Left Semi Join L'operatore Left Semi Join restituisce ogni riga del primo input (superiore) alla quale corrisponde una riga del secondo input (inferiore). Se non esiste alcun predicato join nella Argument colonna, ogni riga è una riga corrispondente. Left Semi Join è un operatore logico.
Icona dell'operatore Analisi Log Row Scan L'operatore Log Row Scan esegue l'analisi del log delle transazioni. Log Row Scan è un operatore logico e fisico.
Icona dell'operatore di tipo merge dell'operatore di intervallo merge Merge Interval L'operatore Merge Interval unisce più intervalli (potenzialmente sovrapposti) e restituisce intervalli minimi non sovrapposti, utilizzati per la ricerca di voci di indice. Questo operatore viene in genere visualizzato sopra uno o più Compute Scalar operatori su Constant Scan operatori, che costruiscono gli intervalli (rappresentati come colonne in una riga) che questo operatore unisce. Merge Interval è un operatore logico e fisico.
Icona dell'operatore Merge join Merge Join L'operatore Merge Join esegue le operazioni di inner join, left outer join, left semi join, left anti semi join, right outer join, right semi join, right anti semi join e union logical.

Argument Nella colonna l'operatore Merge Join contiene un predicato MERGE:() se l'operazione esegue un join uno-a-molti o un predicato MANY-TO-MANY MERGE:() se l'operazione esegue un join molti-a-molti. La Argument colonna include anche un elenco delimitato da virgole di colonne usate per eseguire l'operazione. L'operatore Merge Join richiede due input ordinati in base alle rispettive colonne, eventualmente tramite l'inserimento di operazioni di ordinamento esplicite nel piano di query. Merge Join è particolarmente efficace se non è richiesto l'ordinamento esplicito, ad esempio se nel database è presente un indice ad albero B adeguato o se il tipo di ordinamento è utilizzabile per più operazioni, quali merge join e raggruppamenti con rollup. Merge Join è un operatore fisico.
Icona dell'operatore cicli annidati Nested Loops L'operatore Nested Loops esegue le operazioni logiche di inner join, left outer join, left semi join e left anti semi join. I join a cicli annidati eseguono una ricerca nella tabella interna per ogni riga della tabella esterna, usando generalmente un indice. Query processor determina, in base ai costi previsti, se ordinare l'input esterno per migliorare le ricerche basate sull'indice rispetto all'input interno. Tutte le righe che soddisfano il predicato (facoltativo) nella Argument colonna vengono restituite in base all'operazione logica eseguita. Nested Loops è un operatore fisico.
Icona dell'operatore di eliminazione dell'indice non cluster Nonclustered Index Delete L'operatore Nonclustered Index Delete elimina le righe di input dall'indice non cluster specificato nella Argument colonna. Nonclustered Index Delete è un operatore fisico.
Icona dell'operatore di inserimento dell'indice non cluster Index Insert L'operatore Index Insert inserisce righe dal relativo input nell'indice Argument non cluster specificato nella colonna. La colonna Argument contiene inoltre un predicato SET:(), che indica il valore su cui è impostata ogni colonna. Index Insert è un operatore fisico.
Icona dell'operatore di analisi dell'indice non cluster Index Scan L'operatore Index Scan recupera tutte le righe dall'indice non cluster specificato nella Argument colonna. Se nella colonna viene visualizzato Argument un predicato WHERE:() facoltativo, vengono restituite solo le righe che soddisfano il predicato. Index Scan è un operatore logico e fisico.
Icona dell'operatore Di ricerca dell'indice non cluster Index Seek L'operatore Index Seek utilizza le funzionalità di ricerca degli indici per recuperare righe da un indice non cluster. La Argument colonna contiene il nome dell'indice non cluster usato. La colonna include inoltre il predicato SEEK:(). Il motore di archiviazione utilizza l'indice per elaborare soltanto le righe conformi al predicato SEEK:() Facoltativamente esso può includere un predicato WHERE:(), che verrà valutato dal motore di archiviazione rispetto a tutte le righe conformi al predicato SEEK:() (non utilizza gli indici per tale operazione). Se la colonna contiene la clausola ORDER, il Argument processore di query ha determinato che le righe devono essere restituite nell'ordine in cui l'indice non cluster li ha ordinati. In assenza della clausola ORDERED, il motore di archiviazione esegue una ricerca nell'indice utilizzando il metodo ottimale (con output non necessariamente ordinato). Il mantenimento dell'ordinamento dell'output può dare come risultato un livello di efficienza minore rispetto alla restituzione di output non ordinato. Index Seek è un operatore logico e fisico.
Icona dell'operatore spooling dell'indice non cluster Index Spool L'operatore fisico Spool index contiene un predicato SEEK:() nella Argument colonna. L'operatore Index Spool analizza le righe di input, posizionando una copia di ogni riga in un file spool nascosto (archiviato nel tempdb database e esistente solo per la durata della query) e crea un indice non cluster nelle righe. Ciò consente di utilizzare la funzionalità di ricerca degli indici per restituire solo le righe che soddisfano il predicato SEEK:(). Se l'operatore viene riavvertita (ad esempio, da un Nested Loops operatore), ma non è necessario ribindare i dati, i dati di spooling vengono usati anziché eseguire nuovamente la scalabilità dell'input.
Icona dell'operatore di aggiornamento dell'indice non Nonclustered Index Update L'operatore Nonclustered Index Update fisico aggiorna le righe dal relativo input nell'indice Argument non cluster specificato nella colonna. Se è stato specificato un predicato SET:(), ogni colonna aggiornata viene impostata su tale valore. Nonclustered Index Update è un operatore fisico.
Icona dell'operatore di inserimento dell'indice online Icona dell'operatore Online Index Insert L'operatore fisico Online Index Insert indica che la creazione, la modifica o l'eliminazione di un indice viene eseguita online, ovvero che i dati della tabella sottostante rimangono disponibili agli utenti durante l'operazione sull'indice.
nessuno Parallelism L'operatore Parallelism esegue i flussi di distribuzione, raccogliere flussi e operazioni logiche di repartizione. Le Argument colonne possono contenere un predicato PARTITION COLUMNS:() con un elenco delimitato da virgole delle colonne partizionate. Le Argument colonne possono contenere anche un predicato ORDER BY:(), elencando le colonne per mantenere l'ordine di ordinamento per durante il partizionamento. Parallelism è un operatore fisico.

Nota: se una query è stata compilata come query parallela, ma in fase di esecuzione viene eseguita come query seriale, l'output Showplan generato da SET STATISTICS XML o usando l'opzione Includi piano di esecuzione effettivo in SQL Server Management Studio non conterrà l'elemento per l'operatore RunTimeInformationParallelism. Nell'output SET STATISTICS PROFILE il conteggio effettivo delle righe e il numero effettivo di operazioni visualizzerà zero per l'operatore Parallelism . Quando si verifica una condizione, significa che l'operatore è stato usato solo durante la Parallelism compilazione delle query e non nel piano di query in fase di esecuzione. Si noti che talvolta i piani di query parallele vengono eseguiti in serie se il carico simultaneo del server è elevato.
Icona dell'operatore Analisi tabella parametri Icona dell'operatore Parameter Table Scan L'operatore Parameter Table Scan esegue l'analisi di una tabella che funge da parametro nella query corrente. In genere questa funzionalità è utilizzata per le query INSERT all'interno di una stored procedure. Parameter Table Scan è un operatore logico e fisico.
nessuno Partial Aggregate L'operatorePartial Aggregate è utilizzato nei piani paralleli. Applica una funzione di aggregazione al maggior numero possibile di righe di input in modo che la scrittura su disco (operazione nota come "spill") non sia necessaria. Hash Match è l'unico operatore fisico (iteratore) che implementa l'aggregazione di partizioni. Partial Aggregate è un operatore logico.
Icona dell'operatore cursore della query popolamento dell'icona dell'operatore di cursore della query popolamento Population Query All'apertura di un cursore, l'operatore Population Query esegue il popolamento della relativa tabella di lavoro.
Aggiornare l'icona dell'operatore cursore di query Aggiorna l'icona dell'operatore cursore Refresh Query L'operatore Refresh Query recupera i dati correnti per le righe nel buffer di recupero.
Icona dell'operatore di eliminazione remota Eliminazione remota Icona dell'operatore Remote Delete L'operatore Remote Delete elimina le righe di input da un oggetto remoto. Remote Delete è un operatore logico e fisico.
Operatore showplan remote Remote Index Scan L'operatore Remote Index Scan analizza l'indice remoto specificato nella colonna Argument. Remote Insert Scan è un operatore logico e fisico.
Operatore showplan remote index seek showplan Remote Index Seek L'operatore Remote Index Seek utilizza le capacità di ricerca di un oggetto Index remoto per il recupero di righe. La Argument colonna contiene il nome dell'indice remoto utilizzato e il predicato SEEK:(). Remote Insert Seek è un operatore logico fisico.
Icona dell'operatore Remote Insert Remote Insert L'operatore Remote Insert inserisce le righe di input in un oggetto remoto. Remote Insert è un operatore logico e fisico.
Icona dell'operatore Remote Query Icona dell'operatore Remote Query L'operatore Remote Query invia una query a un'origine remota. Il testo della query inviato al server remoto viene visualizzato nella Argument colonna . Remote Query è un operatore logico e fisico.
Icona dell'operatore Remote Scan Remote Scan L'operatore Remote Scan esegue l'analisi di un oggetto remoto. Il nome dell'oggetto remoto viene visualizzato nella Argument colonna . Remote Scan è un operatore logico e fisico.
Icona dell'operatore Remote UpdateIcona dell'operatore Remote Update L'operatore Remote Update aggiorna le righe di input in un oggetto remoto. Remote Update è un operatore logico e fisico.
Icona dell'operatore Repartition streams parallelism Icona dell'operatore Repartition streams parallelism Repartition Streams L'operatore Repartition Streams elabora più flussi e restituisce più flussi di record. Il contenuto e il formato del record non vengono modificati. Se Query Optimizer utilizza un filtro bitmap, il numero di righe nel flusso di output è ridotto. Ogni record di un flusso di input viene inserito in un flusso di output. Se l'operatore prevede il rispetto dell'ordine, è necessario che tutti i flussi di input risultino ordinati e vengano uniti in vari flussi di output ordinati. Se l'output è partizionato, la Argument colonna contiene un predicato PARTITION COLUMNS:() e le colonne di partizionamento. Se l'output è ordinato, la Argument colonna contiene un predicato ORDER BY:() e le colonne ordinate. Repartition Streams è un operatore logico. L'operatore viene utilizzato solo nei piani di query parallele.
Icona dell'elemento della lingua dei risultatiIcona dell'elemento risultati Result L'operatore Result corrisponde ai dati restituiti alla fine di un piano di query ed è in genere l'elemento radice di uno Showplan. Result è un elemento di linguaggio.
Icona dell'operatore RID Lookup icona dell'operatore RID Lookup RID Lookup implementa la funzionalità di ricerca tramite segnalibro in un heap mediante un identificatore di riga (RID) che viene passato all'operatore. La Argument colonna contiene l'etichetta del segnalibro utilizzata per cercare la riga nella tabella e il nome della tabella in cui viene cercata la riga. RID Lookup è sempre utilizzato in combinazione con un operatore NESTED LOOP JOIN. RID Lookup è un operatore fisico. Per ulteriori informazioni sulle ricerche tramite segnalibro, vedere "Bookmark Lookup" nel blog su SQL Server in MSDN.
nessuno Right Anti Semi Join L'operatore Right Anti Semi Join restituisce ogni riga del secondo input (inferiore) alla quale non corrisponde alcuna riga nel primo input (superiore). Una riga corrispondente viene definita come riga che soddisfa il predicato nella Argument colonna (se non esiste alcun predicato, ogni riga è una riga corrispondente). Right Anti Semi Join è un operatore logico.
nessuno Right Outer Join L'operatore logico Right Outer Join restituisce ogni riga che soddisfa il join del secondo input (inferiore) con ogni riga corrispondente del primo input (superiore). L'operatore restituisce inoltre ogni riga del secondo input alla quale non corrisponde una riga nel primo input, con join a valori NULL. Se nella colonna non esiste Argument alcun predicato di join, ogni riga corrisponde a una riga. Right Outer Join è un operatore logico.
nessuno Right Semi Join L'operatore Right Semi Join restituisce ogni riga del secondo input (inferiore) alla quale corrisponde una riga nel primo input (superiore). Se nella colonna non esiste Argument alcun predicato di join, ogni riga corrisponde a una riga. Right Semi Join è un operatore logico.
Icona dell'operatore Row count spool icona dell'operatore righe Row Count Spool L'operatore Row Count Spool esegue l'analisi dell'input calcolando e restituendo il numero di righe presenti senza alcun dato. Questo operatore viene utilizzato quando è importante verificare l'esistenza delle righe anziché i dati contenuti nelle righe. Ad esempio, se un Nested Loops operatore esegue un'operazione di semi join a sinistra e il predicato di join si applica all'input interno, è possibile posizionare uno spool del conteggio delle righe nella parte superiore dell'input interno dell'operatore Nested Loops . L'operatore Nested Loops può quindi determinare il numero di righe restituite dallo spooling del numero di righe (perché i dati effettivi dal lato interno non sono necessari) per determinare se restituire la riga esterna. Row Count Spool è un operatore fisico.
Icona dell'operatore Segmenticona dell'operatore Segmento Segment è un operatore fisico e logico L'operatore divide il set di input in segmenti in base al valore di una o più colonne Tali colonne vengono visualizzate come argomenti nell'operatore Segment e quindi restituisce un segmento per volta.
nessuno Segment Repartition In un piano di query parallele sono presenti talvolta regioni concettuali di iteratori. È possibile eseguire tutti gli iteratori all'interno di tale regione mediante thread paralleli. Le regioni devono invece essere eseguite in modalità seriale. Alcuni iteratori Parallelism all'interno di una singola regione sono denominati Branch Repartition. L'operatore Parallelism al confine tra due regioni di questo tipo viene denominato Segment Repartition. Branch Repartition e Segment Repartition sono operatori logici.
Icona dell'operatore SequenceIcona dell'operatore Sequence Sequence L'operatore Sequence indirizza i piani di aggiornamento estesi. A livello funzionale l'operatore esegue ogni input in sequenza (dall'alto verso il basso). Ogni input è in genere un aggiornamento di un oggetto diverso. L'operatore restituisce soltanto le righe derivanti dall'ultimo input (inferiore). Sequence è un operatore logico e fisico.
Icona dell'operatore Sequenzaicona dell'operatore Sequence project Sequence Project L'operatore Sequence Project consente di aggiungere colonne per eseguire calcoli in un set ordinato. L'operatore divide il set di input in segmenti in base al valore di una o più colonne e quindi restituisce un segmento per volta. Tali colonne vengono visualizzate come argomenti nell'operatore Sequence Project. Sequence Project è un operatore logico e fisico.
Icona dell'operatore Snapshot CursorIcona dell'operatore Snapshot cursor Snapshot L'operatore Snapshot crea un cursore che non consente di visualizzare le modifiche apportate da altri utenti.
Icona dell'operatore Sorticona dell'operatore Sort Sort L'operatore Sort ordina tutte le righe in ingresso. La Argument colonna contiene un predicato DISTINCT ORDER BY:() se i duplicati vengono rimossi da questa operazione o un predicato ORDER BY:() con un elenco delimitato da virgole delle colonne ordinate. Alle colonne viene assegnato il prefisso ASC se sono ordinate in ordine crescente o il prefisso DESC se sono ordinate in ordine decrescente. Sort è un operatore logico e fisico.
Icona di divisione dell'operatore Split L'operatore viene usato per ottimizzare l'elaborazione Split degli aggiornamenti. Ogni operazione di aggiornamento viene suddivisa in un'operazione di eliminazione e un'operazione di inserimento. Split è un operatore logico e fisico.
Icona dell'operatore Spool icona dell'operatore Spool Spool L'operatore Spool salva un risultato intermedio della query nel tempdb database.
Icona dell'operatore Stream Aggregate L'operatore Stream Aggregate raggruppa le righe in base a una o più colonne e quindi calcola una o più espressioni di aggregazione restituite dalla query. L'output di questo operatore può essere utilizzato come riferimento da operatori successivi nella query, può essere restituito al client o può essere oggetto di entrambe le operazioni. Per l'operatore Stream Aggregate è necessario che l'input sia ordinato in base alle colonne all'interno del relativo gruppo. In Query Optimizer verrà utilizzato un operatore Sort prima di questo se i dati non sono già stati ordinati tramite un operatore Sort precedente o tramite una ricerca o un'analisi di un indice ordinato. Nell'istruzione SHOWPLAN_ALL o nel piano di esecuzione grafico in SQL Server Management Studio le colonne del predicato GROUP BY sono elencate nella Argument colonna e le espressioni di aggregazione sono elencate nella colonna Valori definiti. Stream Aggregate è un operatore fisico.
Icona dell'operatore Switchicona dell'operatore Switch Switch Switch è un tipo speciale di iteratore di concatenazione che prevede n input. A ogni operatore Switch è associata un'espressione. In base al valore restituito dall'espressione (compreso tra 0 e n-1), l'operatore Switch copia il flusso di input appropriato nel flusso di output. Tra i possibili utilizzi dell'operatore Switch è inclusa l'implementazione di query che richiedono cursori fast forward con operatori specifici, ad esempio l'operatore TOP . Switch è un operatore logico e fisico.
Icona dell'operatore Table deleteIcona dell'operatore Table Delete Table Delete L'operatore Table Delete fisico elimina le righe dalla tabella specificata nella Argument colonna del piano di esecuzione della query.
Icona dell'operatore Table insertIcona dell'operatore Table Insert L'operatore Table Insert inserisce righe dal relativo input nella tabella specificata nella Argument colonna del piano di esecuzione della query. La colonna Argument contiene inoltre un predicato SET:(), che indica il valore su cui è impostata ogni colonna. Se in Table Insert non sono disponibili figli per i valori Insert, la riga inserita verrà recuperata dall'operatore Insert stesso. Table Insert è un operatore fisico.
Operatore Table merge operator Table Merge L'operatore Table Merge applica un flusso di dati di unione a un heap. L'operatore elimina, aggiorna o inserisce righe nella tabella specificata nella Argument colonna dell'operatore. L'operazione effettiva eseguita dipende dal valore di runtime della colonna ACTION specificata nella Argument colonna dell'operatore. Table Merge è un operatore fisico.
Icona dell'operatore Table Scan Table Scan L'operatore Table Scan recupera tutte le righe dalla tabella specificata nella Argument colonna del piano di esecuzione della query. Se nella colonna viene visualizzato Argument un predicato WHERE:(), vengono restituite solo le righe che soddisfano il predicato. Table Scan è un operatore logico e fisico.
Icona dell'operatore Table spool Table Spool L'operatore Table Spool esegue l'analisi dell'input e inserisce una copia di ogni riga in una tabella di spooling nascosta archiviata nel database tempdb e con durata limitata alla durata della query. Se l'operatore viene riavvolto (ad esempio, da un Nested Loops operatore), ma non è necessaria alcuna riassociazione, i dati con spooling vengono usati invece di eseguire nuovamente il ridimensionamento dell'input. Table Spool è un operatore fisico.
Icona dell'operatore Table updateIcona dell'operatore Table Update L'operatore Table Update fisico aggiorna le righe di input nella tabella specificata nella Argument colonna del piano di esecuzione della query. Il predicato SET:() determina il valore di ogni colonna aggiornata. Un riferimento a tali valori può essere presente nella clausola SET o in altri punti dell'operatore o nella query.
Icona dell'operatore funzione con valori di tabella Table-valued Function L'operatore Table-valued Function valuta una funzione con valori di tabella (Transact-SQL o CLR) e archivia le righe risultanti nel database tempdb . Quando gli iteratori padre richiedono le righe, la funzione con valori di tabella restituisce le righe da tempdb.

Le query con chiamate a funzioni con valori di tabella generano piani di query con l'iteratore Table-valued Function . Table-valued Function può essere valutato con valori di parametri diversi:

Table-valued Function XML Reader specifica come parametro di input un BLOB XML e produce un set di righe che rappresentano i nodi XML nell'ordine di un documento XML. Altri parametri di input possono limitare i nodi XML restituiti a un subset di un documento XML.

Table Valued Function XML Reader con filtro XPath è un tipo speciale di XML Reader Table-valued Function che limita l'output ai nodi XML che soddisfano un'espressione XPath.



Table-valued Function è un operatore logico e fisico.
Icona dell'operatore Top Icona dell'operatore Top Top L'operatore Top esegue l'analisi dell'input e restituisce solo il primo numero o valore percentuale di righe specificato, eventualmente in base a un ordinamento. La Argument colonna può contenere un elenco delle colonne controllate per individuare i vincoli. Nei piani di aggiornamento l'operatore Top consente di applicare limiti di conteggio righe. Top è un operatore logico e fisico. Top è un operatore logico e fisico.
nessuno Top N Sort Top N Sort è simile all'iteratore, ad eccezione del Sort fatto che sono necessarie solo le prime N righe e non l'intero set di risultati. Per valori piccoli di N, il motore di esecuzione di query SQL Server tenta di eseguire l'intera operazione di ordinamento in memoria. Nel caso di valori elevati di N, il motore di esecuzione delle query ricorre al metodo di ordinamento più generico in cui N non corrisponde a un parametro.
Icona Operatore esteso (UDX) Icona UDX Gli operatori estesi (UDX) implementano una delle numerose operazioni XQuery e XPath in SQL Server. Tutti gli operatori UDX sono logici e fisici.

L'operatore esteso (UDX) FOR XML è utilizzato per serializzare gli input del set di righe relazionale nella rappresentazione XML in un'unica colonna BLOB in un'unica riga di output. È un operatore di aggregazione XML sensibile all'ordinamento.

L'operatore esteso (UDX) XML SERIALIZER è un operatore di aggregazione XML sensibile all'ordinamento. Inserisce righe che rappresentano nodi XML o valori scalari XQuery nell'ordine dei documenti XML e genera un BLOB XML serializzato in un'unica colonna XML in una singola colonna di output.

L'operatore esteso (UDX) XML FRAGMENT SERIALIZER è un particolare tipo di XML SERIALIZER utilizzato per l'elaborazione delle righe di input che rappresentano frammenti XML da inserire nell'estensione INSERT di XQuery per la modifica di dati.

L'operatore esteso (UDX) XQUERY STRING valuta il valore stringa XQuery delle righe di input che rappresentano i nodi XML. È un operatore di aggregazione di stringa sensibile all'ordinamento. Restituisce come output una riga con colonne che rappresentano il valore scalare XQuery che include il valore stringa dell'input.

L'operatore esteso (UDX) XQUERY LIST DECOMPOSER è un operatore di scomposizione di elenco XQuery. Per ogni riga di input che rappresenta un nodo XML, genera una o più righe, ognuna delle quali rappresenta un valore scalare XQuery che include un valore di voce di elenco se l'input è di tipo elenco XSD.

L'operatore esteso (UDX) XQUERY DATA valuta la funzione XQuery fn:data() rispetto all'input che rappresenta i nodi XML. È un operatore di aggregazione di stringa sensibile all'ordinamento. Restituisce come output una riga con colonne che rappresentano il valore scalare XQuery che include il risultato di fn:data() .

L'operatore esteso XQUERY CONTAINS valuta la funzione XQuery fn:contains() rispetto all'input che rappresenta i nodi XML. È un operatore di aggregazione di stringa sensibile all'ordinamento. Restituisce come output una riga con colonne che rappresentano il valore scalare XQuery che include il risultato di fn:contains() .

L'operatore UPDATE XML NODE esteso aggiorna il nodo XML nell'estensione di modifica dei dati XQuery nel metodo modify() sul tipo XML.
nessuno Union L'operatore Union esegue l'analisi di più input e restituisce ogni riga sottoposta ad analisi rimuovendo i duplicati. L'operatoreUnion è un operatore logico.
Icona dell'operatore Update (Motore di database) Icona Update L'operatore Update aggiorna ogni riga dal relativo input nell'oggetto specificato nella Argument colonna del piano di esecuzione della query. Update è un operatore logico. L'operatore fisico è Table Update, Index Update o Clustered Index Update.
Icona dell'elemento del linguaggio While While L'operatore While implementa il ciclo While Transact-SQL. While è un elemento di linguaggio.
Icona dell'operatore Table spool Window Spool L'operatore Window Spool espande ogni riga nel set di righe che rappresenta la finestra associata. In una query la clausola OVER definisce la finestra all'interno di un set di risultati della query, quindi una funzione della finestra calcola un valore per ogni riga della finestra stessa. Window Spool è un operatore logico e fisico.