Guida di riferimento a operatori Showplan logici e fisiciShowplan Logical and Physical Operators Reference

Gli operatori descrivono la modalità di esecuzione di una query o di un'istruzione del linguaggio di manipolazione dei dati (DML, Data Manipulation Language) in SQL ServerSQL Server .Operators describe how SQL ServerSQL Server executes a query or a Data Manipulation Language (DML) statement. 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.The query optimizer uses operators to build a query plan to create the result specified in the query, or to perform the operation specified in the DML statement. Il piano di query è un albero composto da operatori fisiciThe query plan is a tree consisting of physical operators. che è possibile visualizzare tramite le istruzioni SET SHOWPLAN, le opzioni del piano di esecuzione grafico in SQL Server Management StudioSQL Server Management Studioo le classi di eventi Showplan di SQL Server Profiler.You can view the query plan by using the SET SHOWPLAN statements, the graphical execution plan options in SQL Server Management StudioSQL Server Management Studio, or the SQL Server Profiler Showplan event classes.

Gli operatori sono suddivisi in operatori logici e fisici.Operators are classified as logical and physical operators.

Operatori logiciLogical Operators
Gli operatori logici descrivono l'operazione algebrica relazionale utilizzata per elaborare un'istruzione,Logical operators describe the relational algebraic operation used to process a statement. ovvero descrivono a livello concettuale quale operazione deve essere eseguita.In other words, logical operators describe conceptually what operation needs to be performed.

Operatori fisiciPhysical Operators
Gli operatori fisici implementano l'operazione descritta dagli operatori logici.Physical operators implement the operation described by logical operators. Ogni operatore fisico è un oggetto o una routine che esegue un'operazione.Each physical operator is an object or routine that performs an operation. Alcuni operatori fisici, ad esempio, accedono alle colonne o alle righe di una tabella, di un indice o di una vista,For example, some physical operators access columns or rows from a table, index or view. mentre altri eseguono operazioni diverse, ad esempio calcoli, aggregazioni, controlli di integrità dei dati o creazione di join.Other physical operators perform other operations such as calculations, aggregations, data integrity checks or joins. Gli operatori fisici possono influire sulle prestazioni.Physical operators have costs associated with them.

Dopo essere stati inizializzati, gli operatori fisici raccolgono dati e quindi vengono chiusi.The physical operators initialize, collect data, and close. Un operatore fisico risponde alle tre chiamate di metodo seguenti:Specifically, the physical operator can answer the following three method calls:

  • Init(): con la chiamata del metodo Init() un operatore fisico si autoinizializza e imposta le strutture di dati necessarie.Init(): The Init() method causes a physical operator to initialize itself and set up any required data structures. Sebbene l'operatore fisico possa ricevere molte chiamate Init() , in genere ne riceve una sola.The physical operator may receive many Init() calls, though typically a physical operator receives only one.

  • GetNext(): con la chiamata del metodo GetNext() un operatore fisico recupera la prima riga di dati oppure la successiva.GetNext(): The GetNext() method causes a physical operator to get the first, or subsequent row of data. L'operatore fisico può ricevere più chiamate GetNext() oppure nessuna.The physical operator may receive zero or many GetNext() calls.

  • Close(): con la chiamata del metodo Close() un operatore fisico esegue alcune operazioni di eliminazione e viene quindi chiuso automaticamente.Close(): The Close() method causes a physical operator to perform some clean-up operations and shut itself down. Un operatore fisico riceve una sola chiamata del metodo Close() .A physical operator only receives one Close() call.

    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.The GetNext() method returns one row of data, and the number of times it is called appears as ActualRows in the Showplan output that is produced by using SET STATISTICS PROFILE ON or SET STATISTICS XML ON. Per altre informazioni su queste opzioni SET, vedere SET STATISTICS PROFILE (Transact-SQL) e SET STATISTICS XML (Transact-SQL).For more information about these SET options, see SET STATISTICS PROFILE (Transact-SQL) and SET STATISTICS XML (Transact-SQL).

    I conteggi ActualRebinds e ActualRewinds visualizzati nell'output Showplan fanno riferimento al numero di chiamate al metodo Init().The ActualRebinds and ActualRewinds counts that appear in Showplan output refer to the number of times that the Init() method is called. A meno che un operatore non sia nel lato interno di un join ciclico, ActualRebinds è uguale a uno e ActualRewinds è uguale a zero.Unless an operator is on the inner side of a loop join, ActualRebinds equals one and ActualRewinds equals 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.If an operator is on the inner side of a loop join, the sum of the number of rebinds and rewinds should equal the number of rows processed on the outer side of the join. Una riassociazione significa che uno o più parametri correlati del join sono stati modificati e che è necessario rivalutare il lato interno.A rebind means that one or more of the correlated parameters of the join changed and the inner side must be reevaluated. Un ripristino significa che nessuno dei parametri correlati è stato modificato e che è possibile riutilizzare il set di risultati interno precedente.A rewind means that none of the correlated parameters changed and the prior inner result set may be reused.

    ActualRebinds e ActualRewinds sono inclusi nell'output Showplan XML generato utilizzando SET STATISTICS XML ON.ActualRebinds and ActualRewinds are present in XML Showplan output produced by using SET STATISTICS XML ON. Vengono popolati esclusivamente per gli operatori Nonclustered Index Spool, Remote Query, Row Count Spool, Sort, Table Spoole Table-valued Function .They are only populated for the Nonclustered Index Spool, Remote Query, Row Count Spool, Sort, Table Spool, and Table-valued Function operators. AncheActualRebinds e ActualRewinds possono essere popolati per gli operatori Assert e Filter quando l'attributo StartupExpression è impostato su TRUE.ActualRebinds and ActualRewinds may also be populated for the Assert and Filter operators when the StartupExpression attribute is set to TRUE.

    Quando ActualRebinds e ActualRewinds sono inclusi in uno Showplan XML, sono confrontabili con EstimateRebinds e EstimateRewinds.When ActualRebinds and ActualRewinds are present in an XML Showplan, they are comparable to EstimateRebinds and EstimateRewinds. Quando non sono presenti, il numero di righe stimato (EstimateRows) è confrontabile con il numero effettivo di righe (ActualRows).When they are absent, the estimated number of rows (EstimateRows) is comparable to the actual number of rows (ActualRows). Si noti che nell'output grafico effettivo Showplan viene visualizzato zero per le riassociazioni e i ripristini effettivi quando non presenti.Note that actual graphical Showplan output displays zeros for the actual rebinds and actual rewinds when they are absent.

    Un contatore correlato, ActualEndOfScans, è disponibile solo quando l'output Showplan viene generato utilizzando SET STATISTICS XML ON.A related counter, ActualEndOfScans, is available only when Showplan output is produced by using SET STATISTICS XML ON. Ogni volta che un operatore fisico raggiunge la fine del proprio flusso di dati, il contatore viene incrementato di uno.Whenever a physical operator reaches the end of its data stream, this counter is incremented by one. Un operatore fisico può raggiungere la fine del proprio flusso di dati, zero, una o più volte.A physical operator can reach the end of its data stream zero, one, or multiple times. 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.As with rebinds and rewinds, the number of end of scans can be more than one only if the operator is on the inner side of a loop join. Il numero di analisi terminate dovrebbe essere minore o uguale alla somma del numero di riassociazioni e ripristini.The number of end of scans should be less than or equal to the sum of the number of rebinds and rewinds.

Mapping di operatori logici e fisiciMapping Physical and Logical Operators

In Query Optimizer viene creato un piano di query che consiste in un albero di operatori logici.The query optimizer creates a query plan as a tree consisting of logical operators. Dopo la creazione del piano, viene scelto l'operatore fisico più efficiente per ogni operatore logico.After the query optimizer creates the plan, the query optimizer chooses the most efficient physical operator for each logical operator. L'operatore fisico che implementerà un operatore logico viene individuato in base al costo.The query optimizer uses a cost-based approach to determine which physical operator will implement a logical operator.

In genere un'operazione logica può essere implementata da più operatori fisici.Usually, a logical operation can be implemented by multiple physical operators. In alcuni casi rari tuttavia anche un operatore fisico può implementare più operazioni logiche.However, in rare cases, a physical operator can implement multiple logical operations as well.

Descrizioni dell'operatoreOperator Descriptions

In questa sezione vengono descritti gli operatori fisici e logici.This section contains descriptions of the logical and physical operators.

Icona del piano di esecuzione graficoGraphical Execution Plan Icon Operatore ShowplanShowplan Operator DescriptionDescription
Icona dell'operatore Join adattivoAdaptive Join operator icon Join adattivoAdaptive Join L'operatore Join adattivo consente di rimandare la scelta tra l'esecuzione di un metodo hash join e l'esecuzione di un metodo join a cicli annidati a dopo che è stata eseguita la scansione del primo input.The Adaptive Join operator enables the choice of a hash join or nested loop join method to be deferred until the after the first input has been scanned.
NessunoNone AggregateAggregate L'operatore Aggregate calcola il valore di un'espressione che include MIN, MAX, SUM, COUNT o AVG.The Aggregate operator calculates an expression containing MIN, MAX, SUM, COUNT or AVG. Aggregate può essere un operatore logico o fisico.The Aggregate operator can be a logical operator or a physical operator.
Icona dell'operatore Arithmetic ExpressionArithmetic expression operator icon Arithmetic ExpressionArithmetic Expression L'operatore Arithmetic Expression calcola un nuovo valore da valori esistenti in una riga.The Arithmetic Expression operator computes a new value from existing values in a row. L'operatoreArithmetic Expression non viene usato in SQL Server 2017SQL Server 2017.Arithmetic Expression is not used in SQL Server 2017SQL Server 2017.
Icona dell'operatore AssertAssert operator icon AssertAssert L'operatore Assert verifica una condizione,The Assert operator verifies a condition. ad esempio convalida l'integrità referenziale oppure verifica che una sottoquery scalare restituisca una riga.For example, it validates referential integrity or ensures that a scalar subquery returns one row. Per ogni riga di input, l'operatore Assert valuta l'espressione nella colonna Argument del piano di esecuzione.For each input row, the Assert operator evaluates the expression in the Argument column of the execution plan. Se questa espressione restituisce NULL, la riga viene passata tramite l'operatore Assert e l'esecuzione della query procede.If this expression evaluates to NULL, the row is passed through the Assert operator and the query execution continues. Se l'operazione restituisce un valore non NULL, verrà generato l'errore appropriato.If this expression evaluates to a nonnull value, the appropriate error will be raised. Assert è un operatore fisico.The Assert operator is a physical operator.
Icona dell'elemento di linguaggio AssignAssign language element icon AssignAssign L'operatore Assign assegna il valore di un'espressione o di una costante a una variabile.The Assign operator assigns the value of an expression or a constant to a variable. Assign è un elemento di linguaggio.Assign is a language element.
NessunoNone Asnyc ConcatAsnyc Concat L'operatore Asnyc Concat viene usato solo nelle query remote (query distribuite).The Asnyc Concat operator is used only in remote queries (distributed queries). È caratterizzato da n nodi figlio e un nodo padre.It has n children and one parent node. Alcuni nodi figlio sono normalmente computer remoti che partecipano a una query distribuita.Usually, some of the children are remote computers that participate in a distributed query. Asnyc Concat invia chiamate open() simultanee a tutti i figli e quindi applica una mappa di bit a ogni figlio.Asnyc Concat issues open() calls to all of the children simultaneously and then applies a bitmap to each child. Per ogni bit che corrisponde a 1, Async Concat invia le righe di output al nodo padre su richiesta.For each bit that is a 1, Async Concat sends the output rows to the parent node on demand.
Icona dell'operatore BitmapBitmap operator icon BitmapBitmap SQL ServerSQL Server usa l'operatore Bitmap per implementare l'applicazione di filtri bitmap nei piani di query paralleli. uses the Bitmap operator to implement bitmap filtering in parallel query plans. L'applicazione di filtri bitmap velocizza l'esecuzione delle query eliminando le righe con valori di chiave non in grado di produrre record di join prima di passare le righe a un altro operatore, ad esempio l'operatore Parallelism .Bitmap filtering speeds up query execution by eliminating rows with key values that cannot produce any join records before passing rows through another operator such as the Parallelism operator. 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.A bitmap filter uses a compact representation of a set of values from a table in one part of the operator tree to filter rows from a second table in another part of the tree. 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.By removing unnecessary rows early in the query, subsequent operators have fewer rows to work with, and the overall performance of the query improves. Query Optimizer determina quando un bitmap è sufficientemente selettivo per essere utile e a quali operatori il filtro viene applicato.The optimizer determines when a bitmap is selective enough to be useful and in which operators to apply the filter. Bitmap è un operatore fisico.Bitmap is a physical operator.
Icona dell'operatore BitmapBitmap operator icon Bitmap CreateBitmap Create L'operatore Bitmap Create è visualizzato nell'output Showplan in cui vengono compilate le mappe di bit.The Bitmap Create operator appears in the Showplan output where bitmaps are built. Bitmap Create è un operatore logico.Bitmap Create is a logical operator.
Icona dell'operatore Bookmark LookupBookmark lookup operator icon Bookmark LookupBookmark Lookup L'operatore Bookmark Lookup usa un segnalibro (ID di riga o chiave di clustering) per cercare la riga corrispondente nella tabella o nell'indice cluster.The Bookmark Lookup operator uses a bookmark (row ID or clustering key) to look up the corresponding row in the table or clustered index. Nella colonna Argument è inclusa l'etichetta segnalibro utilizzata per la ricerca della riga nella tabella o nell'indice cluster.The Argument column contains the bookmark label used to look up the row in the table or clustered index. La colonna Argument contiene inoltre il nome della tabella o dell'indice cluster in cui viene cercata la riga.The Argument column also contains the name of the table or clustered index in which the row is looked up. Se nella colonna Argument viene visualizzata la clausola WITH PREFETCH, Query Processor considera ottimale l'uso della prelettura asincrona (read-ahead) per la ricerca di segnalibri nella tabella o nell'indice cluster.If the WITH PREFETCH clause appears in the Argument column, the query processor has determined that it is optimal to use asynchronous prefetching (read-ahead) when looking up bookmarks in the table or clustered index.

Bookmark Lookup non viene utilizzato in SQL Server 2017SQL Server 2017.Bookmark Lookup is not used in SQL Server 2017SQL Server 2017. Clustered Index Seek e RID Lookup consentono invece di eseguire la ricerca tramite segnalibro.Instead, Clustered Index Seek and RID Lookup provide bookmark lookup functionality. Tale funzionalità è supportata inoltre dall'operatore Key Lookup .The Key Lookup operator also provides this functionality.
NessunoNone Branch RepartitionBranch Repartition In un piano di query parallele sono presenti talvolta regioni concettuali di iteratori.In a parallel query plan, sometimes there are conceptual regions of iterators. È possibile eseguire tutti gli iteratori all'interno di tale regione mediante thread paralleli.All of the iterators within such a region can be executed by parallel threads. Le regioni devono invece essere eseguite in modalità seriale.The regions themselves must be executed serially. Alcuni iteratori Parallelism all'interno di una singola regione sono denominati Branch Repartition.Some of the Parallelism iterators within an individual region are called Branch Repartition. L'operatore Parallelism al confine tra due regioni di questo tipo viene denominato Segment Repartition.The Parallelism iterator at the boundary of two such regions is called Segment Repartition. Branch Repartition e Segment Repartition sono operatori logici.Branch Repartition and Segment Repartition are logical operators.
NessunoNone BroadcastBroadcast Broadcast ha un nodo figlio e n nodi padre.Broadcast has one child node and n parent nodes. Broadcast invia le proprie righe di input a più consumer su richiesta.Broadcast sends its input rows to multiple consumers on demand. Ogni consumer riceve tutte le righe.Each consumer gets all of the rows. Ad esempio, se tutti i consumer rappresentano i lati di un hash join, verranno compilate n copie delle tabelle hash.For example, if all of the consumers are build sides of a hash join, then n copies of the hash tables will be built.
Icona dell'operatore Build HashBuild hash operator icon Build HashBuild Hash Indica la compilazione di una tabella hash in batch per un indice columnstore con ottimizzazione per la memoria xVelocity.Indicates the build of a batch hash table for an xVelocity memory optimized columnstore index.
NessunoNone CacheCache L'operatoreCache è una versione particolare dell'operatore Spool Cache is a specialized version of the Spool operator. che consente di archiviare solo una riga di dati.It stores only one row of data. L'operatoreCache è un operatore logico.Cache is a logical operator. Cache non è utilizzato in SQL Server 2017SQL Server 2017.Cache is not used in SQL Server 2017SQL Server 2017.
Icona dell'operatore Clustered Index DeleteClustered index delete operator icon Clustered Index DeleteClustered Index Delete L'operatore Clustered Index Delete elimina righe dall'indice cluster specificato nella colonna Argument del piano di esecuzione della query.The Clustered Index Delete operator deletes rows from the clustered index specified in the Argument column of the query execution plan. Se nella colonna Argument è presente un predicato WHERE:(), vengono eliminate solo le righe conformi al predicato.Clustered Index Delete è un operatore fisico.If a WHERE:() predicate is present in the Argument column, then only those rows that satisfy the predicate are deleted.Clustered Index Delete is a physical operator.
Icona dell'operatore Clustered Index InsertClustered index insert operator icon Clustered Index InsertClustered Index Insert L'operatore Showplan Clustered Index Insert consente di inserire le righe dell'input generato nell'indice cluster specificato nella colonna Argument.The Clustered Index Insert Showplan operator inserts rows from its input into the clustered index specified in the Argument column. La colonna Argument include inoltre il predicato SET:(), il quale indica il valore su cui è impostata ogni colonna.The Argument column also contains a SET:() predicate, which indicates the value to which each column is set. Se in Clustered Index Insert non sono disponibili figli per i valori Insert, la riga inserita verrà recuperata dall'operatore Insert stesso.Clustered Index Insert è un operatore fisico.If Clustered Index Insert has no children for insert values, the row inserted is taken from the Insert operator itself.Clustered Index Insert is a physical operator.
Icona dell'operatore Clustered Index MergeClustered index merge operator Clustered Index MergeClustered Index Merge L'operatore Clustered Index Merge applica un flusso di dati di unione a un indice cluster.The Clustered Index Merge operator applies a merge data stream to a clustered index. L'operatore elimina, aggiorna o inserisce righe dall'indice cluster specificato nella colonna dell'argomento dell'operatore.The operator deletes, updates, or inserts rows from the clustered index specified in the Argument column of the operator. L'operazione effettiva eseguita dipende dal valore di runtime della colonna ACTION specificato nella colonna Argument dell'operatore.The actual operation performed depends on the runtime value of the ACTION column specified in the Argument column of the operator. Clustered Index Merge è un operatore fisico.Clustered Index Merge is a physical operator.
Icona dell'operatore Clustered Index ScanClustered index scan operator icon Clustered Index ScanClustered Index Scan L'operatore Clustered Index Scan esegue l'analisi dell'indice cluster specificato nella colonna Argument del piano di esecuzione della query.The Clustered Index Scan operator scans the clustered index specified in the Argument column of the query execution plan. In presenza di un predicato facoltativo WHERE:(), vengono restituite solo le righe conformi al predicato.When an optional WHERE:() predicate is present, only those rows that satisfy the predicate are returned. Se la colonna Argomento include la clausola ORDERED, Query Processor ha richiesto la restituzione dell'output delle righe nell'ordine utilizzato dall'indice cluster.If the Argument column contains the ORDERED clause, the query processor has requested that the output of the rows be returned in the order in which the clustered index has sorted it. Se la clausola ORDERED non è presente, il motore di archiviazione esegue l'analisi dell'indice in modo ottimale, senza necessariamente ordinare l'output.If the ORDERED clause is not present, the storage engine scans the index in the optimal way, without necessarily sorting the output. Clustered Index Scan è un operatore logico e fisico.Clustered Index Scan is a logical and physical operator.
Icona dell'operatore Clustered Index SeekClustered index seek operator icon Clustered Index SeekClustered Index Seek L'operatore Clustered Index Seek utilizza le funzionalità di ricerca degli indici per recuperare righe da un indice cluster.The Clustered Index Seek operator uses the seeking ability of indexes to retrieve rows from a clustered index. La colonna Argument include il nome dell'indice cluster usato e il predicato SEEK:().The Argument column contains the name of the clustered index being used and the SEEK:() predicate. Il motore di archiviazione utilizza l'indice per elaborare soltanto le righe conformi al predicato SEEK:().The storage engine uses the index to process only those rows that satisfy this SEEK:() predicate. 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.It can also include a WHERE:() predicate where the storage engine evaluates against all rows that satisfy the SEEK:() predicate, but this is optional and does not use indexes to complete this process.

Se la colonna dell'argomento include la clausola ORDERED, Query Processor ha determinato che le righe devono essere restituite nello stesso ordine utilizzato dall'indice cluster.If the Argument column contains the ORDERED clause, the query processor has determined that the rows must be returned in the order in which the clustered index has sorted them. Se la clausola ORDERED non è presente, il motore di archiviazione esegue la ricerca nell'indice in modo ottimale, senza necessariamente ordinare l'output.If the ORDERED clause is not present, the storage engine searches the index in the optimal way, without necessarily sorting the output. Il mantenimento dell'ordinamento dell'output può dare come risultato un livello di efficienza minore rispetto alla restituzione di output non ordinato.Allowing the output to retain its ordering can be less efficient than producing nonsorted output. Quando viene visualizzata la parola chiave LOOKUP, è in esecuzione una ricerca tramite segnalibro.When the keyword LOOKUP appears, then a bookmark lookup is being performed. In SQL Server 2008SQL Server 2008 e versioni successive la funzionalità di ricerca tramite segnalibro è fornita dall'operatore Key Lookup .In SQL Server 2008SQL Server 2008 and later versions, the Key Lookup operator provides bookmark lookup functionality. Clustered Index Seek è un operatore logico e fisico.Clustered Index Seek is a logical and physical operator.
Icona dell'operatore Clustered Index UpdateClustered index update operator icon Clustered Index UpdateClustered Index Update L'operatore Clustered Index Update aggiorna le righe di input nell'indice cluster specificato nella colonna Argument . Se è presente un predicato WHERE:(), vengono aggiornate solo le righe conformi al predicato.The Clustered Index Update operator updates input rows in the clustered index specified in the Argument column.If a WHERE:() predicate is present, only those rows that satisfy this predicate are updated. Se è stato specificato un predicato SET:(), ogni colonna aggiornata viene impostata su tale valore.If a SET:() predicate is present, each updated column is set to this value. Se è disponibile un predicato DEFINE:(), vengono elencati i valori definiti da tale operatore.If a DEFINE:() predicate is present, the values that this operator defines are listed. Un riferimento a tali valori può essere presente nella clausola SET o altrove nell'operatore o nella query.These values may be referenced in the SET clause or elsewhere within this operator and elsewhere within this query. Clustered Index Update è un operatore logico e fisico.Clustered Index Update is a logical and physical operator.
Icona dell'operatore CollapseCollapse operator icon CollapseCollapse L'operatore Collapse ottimizza l'elaborazione degli aggiornamenti.The Collapse operator optimizes update processing. Quando si esegue un aggiornamento, è possibile suddividerlo in un'operazione di eliminazione e un'operazione di inserimento tramite l'operatore Split .When an update is performed, it can be split (using the Split operator) into a delete and an insert. La colonna Argument contiene una clausola GROUP BY:() che specifica un elenco di colonne chiave.The Argument column contains a GROUP BY:() clause that specifies a list of key columns. 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.If the query processor encounters adjacent rows that delete and insert the same key values, it replaces these separate operations with a single more efficient update operation. Collapse è un operatore logico e fisico.Collapse is a logical and physical operator.
Analisi indice ColumnstoreColumnstore Index Scan Analisi indice ColumnstoreColumnstore Index Scan L'operatore Columnstore Index Scan esegue l'analisi dell'indice columnstore specificato nella colonna Argument del piano di esecuzione della query.The Columnstore Index Scan operator scans the columnstore index specified in the Argument column of the query execution plan.
Icona dell'operatore Compute ScalarCompute scalar operator icon Compute ScalarCompute Scalar L'operatore Compute Scalar valuta un'espressione e produce un valore scalare calcolato.The Compute Scalar operator evaluates an expression to produce a computed scalar value. Tale valore può essere restituito all'utente e/o utilizzato come riferimento in altre parti della query,This may then be returned to the user, referenced elsewhere in the query, or both. ad esempio in un predicato di filtro o di join.An example of both is in a filter predicate or join predicate. Compute Scalar è un operatore logico e fisico.Compute Scalar is a logical and physical operator.

Gli operatoriCompute Scalar visualizzati negli Showplan generati da SET STATISTICS XML potrebbero non includere l'elemento RunTimeInformation .Compute Scalar operators that appear in Showplans generated by SET STATISTICS XML might not contain the RunTimeInformation element. Negli Showplan grafici è possibile che Actual Rows, Actual Rebindse Actual Rewinds non siano presenti nella finestra Proprietà quando l'opzione Includi piano di esecuzione effettivo è selezionata in SQL Server Management StudioSQL Server Management Studio.In graphical Showplans, Actual Rows, Actual Rebinds, and Actual Rewinds might be absent from the Properties window when the Include Actual Execution Plan option is selected in SQL Server Management StudioSQL 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.When this occurs, it means that although these operators were used in the compiled query plan, their work was performed by other operators in the run-time query plan. 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.Also note that the number of executes in Showplan output generated by SET STATISTICS PROFILE is equivalent to the sum of rebinds and rewinds in Showplans generated by SET STATISTICS XML.
Icona dell'operatore ConcatenationConcatenation operator icon ConcatenationConcatenation L'operatore Concatenation esegue l'analisi di più input e restituisce ogni riga sottoposta ad analisi.The Concatenation operator scans multiple inputs, returning each row scanned. L'operatoreConcatenation in genere viene utilizzato per implementare il costrutto Transact-SQLTransact-SQL UNION ALL.Concatenation is typically used to implement the Transact-SQLTransact-SQL UNION ALL construct. L'operatore fisico Concatenation prevede uno o più input e un outputThe Concatenation physical operator has two or more inputs and one 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 copies rows from the first input stream to the output stream, then repeats this operation for each additional input stream. Concatenation è un operatore logico e fisico.Concatenation is a logical and physical operator.
Icona dell'operatore Constant ScanConstant scan operator icon Constant ScanConstant Scan L'operatore Constant Scan inserisce una o più righe con valore costante in una query.The Constant Scan operator introduces one or more constant rows into a query. Per aggiungere colonne a una riga creata dall'operatore Constant Scan viene spesso utilizzato un operatore Compute Scalar dopo un operatore Constant Scan .A Compute Scalar operator is often used after a Constant Scan to add columns to a row produced by the Constant Scan operator.
Icona dell'elemento di linguaggio Convert (motore di database)Convert (Database Engine) language element icon ConvertiConvert L'operatore Convert converte un tipo di dati scalare in un altro.The Convert operator converts one scalar data type to another. Convert è un elemento di linguaggio.Convert is a language element.
NessunoNone Cross JoinCross Join L'operatore Cross Join crea un join tra ogni riga del primo input (superiore) e ogni riga del secondo input (inferiore).The Cross Join operator joins each row from the first (top) input with each row from the second (bottom) input. Cross Join è un operatore logico.Cross Join is a logical operator.
Icona generica dell'operatore CursorCursor catchall cursor operator icon catchallcatchall L'icona generica viene visualizzata quando la logica che produce Showplan grafici non è in grado di individuare un'icona appropriata per l'iteratore.The catchall icon is displayed when a suitable icon for the iterator cannot be found by the logic that produces graphical showplans. L'icona generica non indica necessariamente una condizione di errore.The catchall icon does not necessarily indicate an error condition. Sono disponibili tre icone generiche: blu (per gli iteratori), arancione (per i cursori) e verde (per gli elementi del linguaggio Transact-SQLTransact-SQL ).There are three catchall icons: blue (for iterators), orange (for cursors), and green (for Transact-SQLTransact-SQL language elements).
NessunoNone CursoreCursor 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.The Cursor logical and physical operators are used to describe how a query or update involving cursor operations is executed. 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.The physical operators describe the physical implementation algorithm used to process the cursor; for example, using a keyset-driven cursor. Ogni passaggio dell'esecuzione di un cursore implica un operatore fisico.Each step in the execution of a cursor involves a physical operator. Gli operatori logici descrivono una proprietà del cursore, ad esempio la proprietà di sola lettura.The logical operators describe a property of the cursor, such as the cursor is read only.

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

mentre quelli fisici includono Dynamic, Fetch Query, Keyset, Population Query, Refresh Query e Snapshot.Physical operators include Dynamic, Fetch Query, Keyset, Population Query, Refresh Query and Snapshot.
Icona dell'elemento di linguaggio DeclareDeclare language element icon DeclareDeclare L'operatore Declare alloca una variabile locale nel piano di query.The Declare operator allocates a local variable in the query plan. Declare è un elemento di linguaggio.Declare is a language element.
Icona dell'operatore Delete (motore di database)Delete (Database Engine) operator icon EliminaDelete L'operatore Delete elimina da un oggetto le righe conformi al predicato facoltativo presente nella colonna Argument .The Delete operator deletes from an object rows that satisfy the optional predicate in the Argument column.
Icona dell'operatore Deleted ScanDelete scan operator icon Deleted ScanDeleted Scan L'operatore Deleted Scan esegue l'analisi della tabella eliminata all'interno di un trigger.The Deleted Scan operator scans the deleted table within a trigger.
NessunoNone DistinctDistinct L'operatore Distinct rimuove i duplicati da un set di righe o da una raccolta di valori.The Distinct operator removes duplicates from a rowset or from a collection of values. Distinct è un operatore logico.Distinct is a logical operator.
NessunoNone Distinct SortDistinct Sort L'operatore logico Distinct Sort esegue l'analisi dell'input rimuovendo i valori duplicati ed eseguendo l'ordinamento in base alle colonne specificate nel predicato DISTINCT ORDER BY:() della colonna Argument .The Distinct Sort logical operator scans the input, removing duplicates and sorting by the columns specified in the DISTINCT ORDER BY:() predicate of the Argument column. Distinct Sort è un operatore logico.Distinct Sort is a logical operator.
Icona dell'operatore di parallelismo Distribute StreamsDistribute streams parallelism operator icon Distribute StreamsDistribute Streams L'operatore Distribute Streams viene utilizzato esclusivamente in piani di query parallele.The Distribute Streams operator is used only in parallel query plans. L'operatore Distribute Streams elabora un singolo flusso di input di record e produce più flussi di output.The Distribute Streams operator takes a single input stream of records and produces multiple output streams. Il contenuto e il formato del record non vengono modificati.The record contents and format are not changed. Ogni record del flusso di input appare in uno dei flussi di output.Each record from the input stream appears in one of the output streams. L'operatore mantiene automaticamente l'ordine relativo dei record di input nei flussi di output.This operator automatically preserves the relative order of the input records in the output streams. In genere, l'appartenenza di un record di input a un flusso di output viene determinata tramite un'operazione di hashing.Usually, hashing is used to decide to which output stream a particular input record belongs.

Se l'output è partizionato, la colonna Argument include un predicato PARTITION COLUMNS:() e le colonne di partizionamento.If the output is partitioned, then the Argument column contains a PARTITION COLUMNS:() predicate and the partitioning columns. Distribute Streams è un operatore logico.Distribute Streams is a logical operator
Icona dell'operatore Dynamic per il cursoreDynamic cursor operator icon DynamicDynamic L'operatore Dynamic utilizza un cursore che può visualizzare tutte le modifiche apportate da altri utenti.The Dynamic operator uses a cursor that can see all changes made by others.
Icona dell'operatore SpoolSpool operator icon Eager SpoolEager Spool L'operatore Eager Spool elabora l'intero input e archivia ogni riga in un oggetto temporaneo nascosto archiviato a sua volta nel database tempdb .The Eager Spool operator takes the entire input, storing each row in a hidden temporary object stored in the tempdb database. Se l'operatore viene ripristinato, ad esempio tramite un operatore Nested Loops , ma non è necessario eseguire nuovamente l'associazione, l'analisi dell'input non viene ripetuta e vengono invece usati i dati di spooling.If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the 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.If rebinding is needed, the spooled data is discarded and the spool object is rebuilt by rescanning the (rebound) input. 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.The Eager Spool operator builds its spool file in an "eager" manner: when the spool's parent operator asks for the first row, the spool operator consumes all rows from its input operator and stores them in the spool. Eager Spool è un operatore logico.Eager Spool is a logical operator.
Icona dell'operatore Fetch Query per il cursoreFetch query cursor operator icon Fetch QueryFetch Query L'operatore Fetch Query recupera le righe quando viene eseguita un'operazione di recupero in un cursore.The Fetch Query operator retrieves rows when a fetch is issued against a cursor.
Icona dell'operatore Filter (motore di database)Filter (Database Engine) operator icon FilterFilter L'operatore Filter esegue l'analisi dell'input restituendo soltanto le righe che soddisfano l'espressione di filtro (predicato) indicata nella colonna Argument .The Filter operator scans the input, returning only those rows that satisfy the filter expression (predicate) that appears in the Argument column.
NessunoNone Flow DistinctFlow Distinct L'operatore logico Flow Distinct esegue l'analisi dell'input e rimuove i valori duplicati.The Flow Distinct logical operator scans the input, removing duplicates. Mentre l'operatore Distinct elabora l'intero input prima di produrre un risultato, l'operatore FlowDistinct restituisce ogni riga come viene ottenuta dall'input, ad eccezione delle righe duplicate che vengono eliminate.Whereas the Distinct operator consumes all input before producing any output, the FlowDistinct operator returns each row as it is obtained from the input (unless that row is a duplicate, in which case it is discarded).
NessunoNone Full Outer JoinFull 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).The Full Outer Join logical operator returns each row satisfying the join predicate from the first (top) input joined with each row from the second (bottom) input. L'operatore restituisce inoltre:It also returns rows from:

- Righe del primo input senza corrispondenze nel secondo input.-The first input that had no matches in the second input.

- Righe del secondo input senza corrispondenze nel primo input.-The second input that had no matches in the first input.

L'input che non include valori corrispondenti viene restituito come valore Null.The input that does not contain the matching values is returned as a null value. Full Outer Join è un operatore logico.Full Outer Join is a logical operator.
Icona dell'operatore di parallelismo Gather StreamsGather streams parallelism operator icon Gather StreamsGather Streams L'operatore logico Gather Streams viene utilizzato esclusivamente in piani di query paralleli.The Gather Streams operator is only used in parallel query plans. Tale operatore elabora vari flussi di input e quindi produce un unico flusso di output di record derivati dalla combinazione dei flussi di input.The Gather Streams operator consumes several input streams and produces a single output stream of records by combining the input streams. Il contenuto e il formato del record non vengono modificati.The record contents and format are not changed. Se l'operatore prevede l'ordinamento, è necessario che tutti i flussi di input siano ordinati.If this operator is order preserving, all input streams must be ordered. Se l'output è ordinato, la colonna Argument contiene un predicato ORDER BY:() e i nomi delle colonne ordinate.If the output is ordered, the Argument column contains an ORDER BY:() predicate and the names of columns being ordered. Gather Streams è un operatore logico.Gather Streams is a logical operator.
Icona dell'operatore Hash MatchHash match operator icon Hash MatchHash Match L'operatore Hash Match compila una tabella hash calcolando un valore hash per ogni riga dall'input di compilazione.The Hash Match operator builds a hash table by computing a hash value for each row from its build input. Nella colonna Argument appare un predicato HASH:() unitamente all'elenco delle colonne usate per la creazione del valore hash.A HASH:() predicate with a list of columns used to create a hash value appears in the Argument column. 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.Then, for each probe row (as applicable), it computes a hash value (using the same hash function) and looks in the hash table for matches. Se è presente un predicato residuo, identificato da RESIDUAL:() nella colonna Argument , per considerare le righe come corrispondenti è necessario che sia soddisfatto anche tale predicato.If a residual predicate is present (identified by RESIDUAL:() in the Argument column), that predicate must also be satisfied for rows to be considered a match. Il funzionamento dipende dell'operazione logica eseguita:Behavior depends on the logical operation being performed:

- Per tutti i join, usare il primo input (superiore) per la compilazione della tabella hash e il secondo input (inferiore) per l'esecuzione del probe nella tabella hash.-For any joins, use the first (top) input to build the hash table and the second (bottom) input to probe the hash table. L'output delle corrispondenze (o delle mancate corrispondenze) viene eseguito in base a quanto previsto dal tipo di join.Output matches (or nonmatches) as dictated by the join type. Se più join utilizzano la stessa colonna di join, le operazioni sono raggruppate in un gruppo di hash.If multiple joins use the same join column, these operations are grouped into a hash team.

- Per gli operatori Distinct o Aggregate, usare l'input per la compilazione della tabella hash (con rimozione dei duplicati e calcolo di eventuali espressioni di aggregazione).-For the distinct or aggregate operators, use the input to build the hash table (removing duplicates and computing any aggregate expressions). Quando viene creata la tabella hash, vengono eseguiti l'analisi della tabella e il successivo output di tutte le voci.When the hash table is built, scan the table and output all entries.

Per l'operatore Union, usare il primo input per la compilazione della tabella hash (con rimozione dei duplicati).-For the union operator, use the first input to build the hash table (removing duplicates). 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.Use the second input (which must have no duplicates) to probe the hash table, returning all rows that have no matches, then scan the hash table and return all entries.

Hash Match è un operatore fisico.Hash Match is a physical operator.
Icona dell'elemento di linguaggio IfIf language element icon Se inIf L'operatore If esegue un'elaborazione condizionale basata su un'espressione.The If operator carries out conditional processing based on an expression. If è un elemento di linguaggio.If is a language element.
NessunoNone Inner joinInner Join L'operatore logico Inner Join restituisce ogni riga che soddisfa il join del primo input (superiore) con il secondo input (inferiore).The Inner Join logical operator returns each row that satisfies the join of the first (top) input with the second (bottom) input.
Icona dell'operatore Insert (motore di database)Insert (Database Engine) operator icon InsertInsert L'operatore Insert inserisce ogni riga del proprio input nell'oggetto specificato nella colonna Argument .The Insert logical operator inserts each row from its input into the object specified in the Argument column. L'operatore fisico è l'operatore Table Insert, Index Inserto Clustered Index Insert .The physical operator is either the Table Insert, Index Insert, or Clustered Index Insert operator.
Icona dell'operatore Inserted ScanInserted scan operator icon Inserted ScanInserted Scan L'operatore Inserted Scan esegue l'analisi della tabella inserted .The Inserted Scan operator scans the inserted table. Inserted Scan è un operatore logico e fisico.Inserted Scan is a logical and physical operator.
Icona dell'elemento di linguaggio IntrinsicIntrinsic language element icon IntrinsicIntrinsic L'operatore Intrinsic richiama una funzione Transact-SQLTransact-SQL interna.The Intrinsic operator invokes an internal Transact-SQLTransact-SQL function. Intrinsic è un elemento di linguaggio.Intrinsic is a language element.
Icona generica dell'operatore IteratorIterator catchall operator icon IteratorIterator 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.The Iterator catchall icon is displayed when a suitable icon for the iterator cannot be found by the logic that produces graphical Showplans. L'icona generica non indica necessariamente una condizione di errore.The catchall icon does not necessarily indicate an error condition. Sono disponibili tre icone generiche: blu (per gli iteratori), arancione (per i cursori) e verde (per i costrutti del linguaggio Transact-SQLTransact-SQL ).There are three catchall icons: blue (for iterators), orange (for cursors), and green (for Transact-SQLTransact-SQL language constructs).
Icona dell'operatore Bookmark LookupBookmark lookup operator icon Key LookupKey Lookup L'operatore Key Lookup implementa la funzionalità di ricerca tramite segnalibro per le tabelle con un indice cluster.The Key Lookup operator is a bookmark lookup on a table with a clustered index. La colonna Argument contiene il nome dell'indice cluster e la chiave di clustering utilizzata per la ricerca della riga nell'indice cluster.The Argument column contains the name of the clustered index and the clustering key used to look up the row in the clustered index. L'operatoreKey Lookup è sempre utilizzato in combinazione con un operatore Nested Loops .Key Lookup is always accompanied by a Nested Loops operator. Se nella colonna Argument viene visualizzata la clausola WITH PREFETCH, Query Processor considera ottimale l'uso della prelettura asincrona (read-ahead) per la ricerca di segnalibri nell'indice cluster.If the WITH PREFETCH clause appears in the Argument column, the query processor has determined that it is optimal to use asynchronous prefetching (read-ahead) when looking up bookmarks in the clustered index.

L'utilizzo di un operatore Key Lookup in un piano di query indica che l'ottimizzazione delle prestazioni potrebbe consentire di ottenere risultati migliori per la query.The use of a Key Lookup operator in a query plan indicates that the query might benefit from performance tuning. Le prestazioni della query, ad esempio, potrebbero essere migliorate con l'aggiunta di un indice di copertura.For example, query performance might be improved by adding a covering index.
Icona dell'operatore Keyset per il cursoreKeyset cursor operator icon KeysetKeyset L'operatore Keyset utilizza un cursore in grado di riconoscere gli aggiornamenti ma non gli inserimenti eseguiti da altri.The Keyset operator uses a cursor that can see updates, but not inserts made by others.
Icona generica per Language ElementLanguage element catchall icon Elemento LanguageLanguage 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.The Language Element catchall icon is displayed when a suitable icon for the iterator cannot be found by the logic that produces graphical Showplans. L'icona generica non indica necessariamente una condizione di errore.The catchall icon does not necessarily indicate an error condition. Sono disponibili tre icone generiche: blu (per gli iteratori), arancione (per i cursori) e verde (per i costrutti del linguaggio Transact-SQLTransact-SQL ).There are three catchall icons: blue (for iterators), orange (for cursors), and green (for Transact-SQLTransact-SQL language constructs).
Icona dell'operatore SpoolSpool operator icon Lazy SpoolLazy Spool L'operatore logico Lazy Spool archivia ogni riga dell'input in un oggetto temporaneo nascosto memorizzato nel database tempdb .The Lazy Spool logical operator stores each row from its input in a hidden temporary object stored in the tempdb database. Se l'operatore viene ripristinato, ad esempio tramite un operatore Nested Loops , ma non è necessario eseguire nuovamente l'associazione, l'analisi dell'input non viene ripetuta e vengono invece usati i dati di spooling.If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the 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.If rebinding is needed, the spooled data is discarded and the spool object is rebuilt by rescanning the (rebound) input. 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.The Lazy Spool operator builds its spool file in a "lazy" manner, that is, each time the spool's parent operator asks for a row, the spool operator gets a row from its input operator and stores it in the spool, rather than consuming all rows at once. Lazy Spool è un operatore logico.Lazy Spool is a logical operator.
NessunoNone Left Anti Semi JoinLeft 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).The Left Anti Semi Join operator returns each row from the first (top) input when there is no matching row in the second (bottom) input. Se nella colonna Argument non è presente un predicato di join, ogni riga viene interpretata come riga corrispondente.If no join predicate exists in the Argument column, each row is a matching row. Left Anti Semi Join è un operatore logico.Left Anti Semi Join is a logical operator.
NessunoNone Left Outer JoinLeft Outer Join L'operatore Left Outer Join restituisce ogni riga che soddisfa il join del primo input (superiore) con il secondo input (inferiore).The Left Outer Join operator returns each row that satisfies the join of the first (top) input with the second (bottom) input. L'operatore restituisce inoltre ogni riga del primo input alla quale non corrisponde una riga nel secondo input.It also returns any rows from the first input that had no matching rows in the second input. Le righe senza corrispondenza nel secondo input vengono restituite come valori Null.The nonmatching rows in the second input are returned as null values. Se nella colonna Argument non è presente un predicato di join, ogni riga viene interpretata come riga corrispondente.If no join predicate exists in the Argument column, each row is a matching row. Left Outer Join è un operatore logico.Left Outer Join is a logical operator.
NessunoNone Left Semi JoinLeft Semi Join L'operatore Left Semi Join restituisce ogni riga del primo input (superiore) alla quale corrisponde una riga del secondo input (inferiore).The Left Semi Join operator returns each row from the first (top) input when there is a matching row in the second (bottom) input. Se nella colonna Argument non è presente un predicato di join, ogni riga viene interpretata come riga corrispondente.If no join predicate exists in the Argument column, each row is a matching row. Left Semi Join è un operatore logico.Left Semi Join is a logical operator.
Icona dell'operatore Log Row ScanLog row scan operator icon Log Row ScanLog Row Scan L'operatore Log Row Scan esegue l'analisi del log delle transazioni.The Log Row Scan operator scans the transaction log. Log Row Scan è un operatore logico e fisico.Log Row Scan is a logical and physical operator.
Icona dell'operatore Merge IntervalMerge interval operator icon Merge IntervalMerge Interval L'operatore Merge Interval unisce più intervalli (potenzialmente sovrapposti) e restituisce intervalli minimi non sovrapposti, usati per la ricerca di voci di indice.The Merge Interval operator merges multiple (potentially overlapping) intervals to produce minimal, nonoverlapping intervals that are then used to seek index entries. Questo operatore appare in genere sopra uno o più operatori Compute Scalar negli operatori Constant Scan . Tali operatori creano gli intervalli (rappresentati da colonne di una riga) uniti dall'operatore.This operator typically appears above one or more Compute Scalar operators over Constant Scan operators, which construct the intervals (represented as columns in a row) that this operator merges. Merge Interval è un operatore logico e fisico.Merge Interval is a logical and physical operator.
Icona dell'operatore Merge JoinMerge join operator icon Merge JoinMerge 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.The Merge Join operator performs the inner join, left outer join, left semi join, left anti semi join, right outer join, right semi join, right anti semi join, and union logical operations.

Nella colonna Argument l'operatore Merge Join include un predicato MERGE:() se è in esecuzione un join di tipo uno-a-molti, oppure un predicato MANY-TO-MANY MERGE:() se è in esecuzione un join di tipo molti-a-molti.In the Argument column, the Merge Join operator contains a MERGE:() predicate if the operation is performing a one-to-many join, or a MANY-TO-MANY MERGE:() predicate if the operation is performing a many-to-many join. La colonna Argument include anche un elenco separato da virgole delle colonne usate per l'esecuzione dell'operazione.The Argument column also includes a comma-separated list of columns used to perform the operation. 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.The Merge Join operator requires two inputs sorted on their respective columns, possibly by inserting explicit sort operations into the query plan. 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 is particularly effective if explicit sorting is not required, for example, if there is a suitable B-tree index in the database or if the sort order can be exploited for multiple operations, such as a merge join and grouping with roll up. Merge Join è un operatore fisico.Merge Join is a physical operator.
Icona dell'operatore Nested LoopsNested loops operator icon Nested LoopsNested Loops L'operatore Nested Loops esegue le operazioni logiche di inner join, left outer join, left semi join e left anti semi join.The Nested Loops operator performs the inner join, left outer join, left semi join, and left anti semi join logical operations. I join a cicli annidati eseguono una ricerca nella tabella interna per ogni riga della tabella esterna, usando generalmente un indice.Nested loops joins perform a search on the inner table for each row of the outer table, typically using an index. Query processor determina, in base ai costi previsti, se ordinare l'input esterno per migliorare le ricerche basate sull'indice rispetto all'input interno.The query processor decides, based on anticipated costs, whether to sort the outer input in order to improve locality of the searches on the index over the inner input. Vengono restituite le righe conformi al predicato (facoltativo) nella colonna Argument a seconda dell'operazione logica eseguita.Any rows that satisfy the (optional) predicate in the Argument column are returned as applicable, based on the logical operation being performed. Nested Loops è un operatore fisico.Nested Loops is a physical operator.
Icona dell'operatore Nonclustered Index DeleteNonclustered index delete operator icon Nonclustered Index DeleteNonclustered Index Delete L'operatore Nonclustered Index Delete elimina le righe di input dall'indice non cluster specificato nella colonna Argument .The Nonclustered Index Delete operator deletes input rows from the nonclustered index specified in the Argument column. Nonclustered Index Delete è un operatore fisico.Nonclustered Index Delete is a physical operator.
Icona dell'operatore Index Insert per indice non clusterNonclustered index insert operator icon Index InsertIndex Insert L'operatore Index Insert inserisce righe del proprio input nell'indice non cluster specificato nella colonna Argument .The Index Insert operator inserts rows from its input into the nonclustered index specified in the Argument column. La colonna Argument include anche un predicato SET:(), che indica il valore su cui viene impostata ogni colonna.The Argument column also contains a SET:() predicate, which indicates the value to which each column is set. Index Insert è un operatore fisico.Index Insert is a physical operator.
Icona dell'operatore Index Scan per indice non clusterNonclustered index scan operator icon Index ScanIndex Scan L'operatore Index Scan recupera tutte le righe dall'indice non cluster specificato nella colonna Argument .The Index Scan operator retrieves all rows from the nonclustered index specified in the Argument column. Se nella colonna Argument è presente un predicato WHERE:() facoltativo, vengono restituite solo le righe conformi al predicato.If an optional WHERE:() predicate appears in the Argument column, only those rows that satisfy the predicate are returned. Index Scan è un operatore logico e fisico.Index Scan is a logical and physical operator.
Icona dell'operatore Index Seek per indice non clusterNonclustered index seek operator icon Index SeekIndex Seek L'operatore Index Seek utilizza le funzionalità di ricerca degli indici per recuperare righe da un indice non cluster.The Index Seek operator uses the seeking ability of indexes to retrieve rows from a nonclustered index. La colonna dell'argomento include il nome dell'indice non cluster utilizzato.The Argument column contains the name of the nonclustered index being used. La colonna include inoltre il predicato SEEK:().It also contains the SEEK:() predicate. Il motore di archiviazione utilizza l'indice per elaborare soltanto le righe conformi al predicato SEEK:()The storage engine uses the index to process only those rows that satisfy the SEEK:() predicate. 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).It optionally may include a WHERE:() predicate, which the storage engine will evaluate against all rows that satisfy the SEEK:() predicate (it does not use the indexes to do this). Se la colonna dell'argomento include la clausola ORDERED, Query Processor ha determinato che le righe devono essere restituite nello stesso ordine utilizzato dall'indice non cluster.If the Argument column contains the ORDERED clause, the query processor has determined that the rows must be returned in the order in which the nonclustered index has sorted them. In assenza della clausola ORDERED, il motore di archiviazione esegue una ricerca nell'indice utilizzando il metodo ottimale (con output non necessariamente ordinato).If the ORDERED clause is not present, the storage engine searches the index in the optimal way (which does not guarantee that the output will be sorted). Il mantenimento dell'ordinamento dell'output può dare come risultato un livello di efficienza minore rispetto alla restituzione di output non ordinato.Allowing the output to retain its ordering may be less efficient than producing nonsorted output. Index Seek è un operatore logico e fisico.Index Seek is a logical and physical operator.
Icona dell'operatore Index Spool per indice non clusterNonclustered index spool operator icon Index SpoolIndex Spool L'operatore fisico Index Spool contiene un predicato SEEK:() nella colonna Argument .The Index Spool physical operator contains a SEEK:() predicate in the Argument column. L'operatore Index Spool esegue l'analisi delle proprie righe di input e inserisce una copia di ogni riga in un file di spooling nascosto (archiviato nel database tempdb e con durata equivalente a quella della query), quindi compila un indice non cluster sulle righe.The Index Spool operator scans its input rows, placing a copy of each row in a hidden spool file (stored in the tempdb database and existing only for the lifetime of the query), and builds a nonclustered index on the rows. Ciò consente di utilizzare la funzionalità di ricerca degli indici per restituire solo le righe che soddisfano il predicato SEEK:().This allows you to use the seeking capability of indexes to output only those rows that satisfy the SEEK:() predicate. Se l'operatore viene ripristinato, ad esempio tramite un operatore Nested Loops , ma non è necessario eseguire nuovamente l'associazione, l'analisi dell'input non viene ripetuta e vengono invece usati i dati di spooling.If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input.
Icona dell'operatore Nonclustered Index UpdateNonclustered index update operator icon Nonclustered Index UpdateNonclustered Index Update L'operatore fisico Nonclustered Index Update aggiorna righe del proprio input nell'indice non cluster specificato nella colonna Argomento .The Nonclustered Index Update physical operator updates rows from its input in the nonclustered index specified in the Argument column. Se è stato specificato un predicato SET:(), ogni colonna aggiornata viene impostata su tale valore.If a SET:() predicate is present, each updated column is set to this value. Nonclustered Index Update è un operatore fisico.Nonclustered Index Update is a physical operator.
Icona dell'operatore Online Index InsertOnline index insert operator icon Online Index InsertOnline Index Insert L'operatore fisico Online Index Insert indica che la creazione, la modifica o l'eliminazione di un indice viene eseguita online,The Online Index Insert physical operator indicates that an index create, alter, or drop operation is performed online. ovvero che i dati della tabella sottostante rimangono disponibili agli utenti durante l'operazione sull'indice.That is, the underlying table data remains available to users during the index operation.
NessunoNone ParallelismParallelism L'operatore Parallelism (o l'iteratore di scambio) esegue le operazioni logiche Distribute Streams, Gather Streams e Repartition Streams.The Parallelism operator (or Exchange Iterator) performs the distribute streams, gather streams, and repartition streams logical operations. Le colonne Argument possono contenere un predicato PARTITION COLUMNS:() con un elenco delimitato da virgole contenente le colonne partizionate.The Argument columns can contain a PARTITION COLUMNS:() predicate with a comma-separated list of the columns being partitioned. Le colonne Argument possono includere inoltre un predicato ORDER BY:(), che elenca le colonne di cui deve essere mantenuto l'ordinamento durante il partizionamento.The Argument columns can also contain an ORDER BY:() predicate, listing the columns to preserve the sort order for during partitioning. Parallelism è un operatore fisico.Parallelism is a physical operator. Per altre informazioni sull'operatore Parallelism, vedere la serie di blog di Craig Freedman.For more information about the Parallelism operator, see Craig Freedman’s blog series.

Nota: se una query è stata compilata come parallela, ma in fase di esecuzione viene eseguita come seriale, l'output Showplan generato da SET STATISTICS XML o dall'opzione Includi piano di esecuzione effettivo in SQL Server Management StudioSQL Server Management Studio non includerà l'elemento RunTimeInformation per l'operatore Parallelism.Note: If a query has been compiled as a parallel query, but at run time it is run as a serial query, the Showplan output generated by SET STATISTICS XML or by using the Include Actual Execution Plan option in SQL Server Management StudioSQL Server Management Studio will not contain the RunTimeInformation element for the Parallelism operator. Nell'output di SET STATISTICS PROFILE i conteggi delle righe effettivi e il numero effettivo delle esecuzioni indicheranno zero per l'operatore Parallelism .In SET STATISTICS PROFILE output, the actual row counts and actual number of executes will display zeroes for the Parallelism operator. Quando una delle due condizioni si verifica, significa che l'operatore Parallelism è stato usato solo durante la compilazione delle query e non nel piano di query di runtime.When either condition occurs, it means that the Parallelism operator was only used during query compilation and not in the run-time query plan. Si noti che talvolta i piani di query parallele vengono eseguiti in serie se il carico simultaneo del server è elevato.Note that sometimes parallel query plans are run in serial if there is a high concurrent load on the server.
Icona dell'operatore Parameter Table ScanParameter table scan operator icon Parameter Table ScanParameter Table Scan L'operatore Parameter Table Scan esegue l'analisi di una tabella che funge da parametro nella query corrente.The Parameter Table Scan operator scans a table that is acting as a parameter in the current query. In genere questa funzionalità è utilizzata per le query INSERT all'interno di una stored procedure.Typically, this is used for INSERT queries within a stored procedure. Parameter Table Scan è un operatore logico e fisico.Parameter Table Scan is a logical and physical operator.
NessunoNone Partial AggregatePartial Aggregate L'operatorePartial Aggregate è utilizzato nei piani paralleli.Partial Aggregate is used in parallel plans. 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.It applies an aggregation function to as many input rows as possible so that writing to disk (known as a "spill") is not necessary. Hash Match è l'unico operatore fisico (iteratore) che implementa l'aggregazione delle partizioni.Hash Match is the only physical operator (iterator) that implements partition aggregation. Partial Aggregate è un operatore logico.Partial Aggregate is a logical operator.
Icona dell'operatore Population Query per il cursorePopulation query cursor operator icon Population QueryPopulation Query All'apertura di un cursore, l'operatore Population Query esegue il popolamento della relativa tabella di lavoro.The Population Query operator populates the work table of a cursor when the cursor is opened.
Icona dell'operatore Refresh Query per il cursoreRefresh query cursor operator icon Refresh QueryRefresh Query L'operatore Refresh Query recupera i dati correnti per le righe nel buffer di recupero.The Refresh Query operator fetches current data for rows in the fetch buffer.
Icona dell'operatore Remote DeleteRemote delete operator icon Remote DeleteRemote Delete L'operatore Remote Delete elimina le righe di input da un oggetto remoto.The Remote Delete operator deletes the input rows from a remote object. Remote Delete è un operatore logico e fisico.Remote Delete is a logical and physical operator.
Operatore Showplan Remote Index Scanremote index seek showplan operator Remote Index ScanRemote Index Scan L'operatore Remote Index Scan analizza l'indice remoto specificato nella colonna Argument.The Remote Index Scan operator scans the remote index specified in the Argument column. Remote Insert Scan è un operatore logico e fisico.Remote Index Scan is a logical and physical operator.
Operatore Showplan Remote Index Seekremote index seek showplan operator Remote Index SeekRemote Index Seek L'operatore Remote Index Seek utilizza le capacità di ricerca di un oggetto Index remoto per il recupero di righe.The Remote Index Seek operator uses the seeking ability of a remote index object to retrieve rows. La colonna Argument include il nome dell'indice remoto usato e il predicato SEEK:().The Argument column contains the name of the remote index being used and the SEEK:() predicate. Remote Insert Seek è un operatore logico fisico.Remote Index Seek is a logical physical operator.
Icona dell'operatore Remote InsertRemote insert operator icon Remote InsertRemote Insert L'operatore Remote Insert inserisce le righe di input in un oggetto remoto.The Remote Insert operator inserts the input rows into a remote object. Remote Insert è un operatore logico e fisico.Remote Insert is a logical and physical operator.
Icona dell'operatore Remote QueryRemote query operator icon Remote QueryRemote Query L'operatore Remote Query invia una query a un'origine remota.The Remote Query operator submits a query to a remote source. Il testo della query inviata al server remoto viene visualizzato nella colonna Argument .The text of the query sent to the remote server appears in the Argument column. Remote Query è un operatore logico e fisico.Remote Query is a logical and physical operator.
Icona dell'operatore Remote ScanRemote scan operator icon Remote ScanRemote Scan L'operatore Remote Scan esegue l'analisi di un oggetto remoto.The Remote Scan operator scans a remote object. Il nome dell'oggetto remoto appare nella colonna Argomento .The name of the remote object appears in the Argument column. Remote Scan è un operatore logico e fisico.Remote Scan is a logical and physical operator.
Icona dell'operatore Remote UpdateRemote update operator icon Remote UpdateRemote Update L'operatore Remote Update aggiorna le righe di input in un oggetto remoto.The Remote Update operator updates the input rows in a remote object. Remote Update è un operatore logico e fisico.Remote Update is a logical and physical operator.
Icona dell'operatore di parallelismo Repartition StreamsRepartition streams parallelism operator icon Repartition StreamsRepartition Streams L'operatore Repartition Streams (o l'iteratore di scambio) elabora più flussi e produce più flussi di record.The Repartition Streams operator (or exchange iterator) consumes multiple streams and produces multiple streams of records. Il contenuto e il formato del record non vengono modificati.The record contents and format are not changed. Se Query Optimizer utilizza un filtro bitmap, il numero di righe nel flusso di output è ridotto.If the query optimizer uses a bitmap filter, the number of rows in the output stream is reduced. Ogni record di un flusso di input viene inserito in un flusso di output.Each record from an input stream is placed into one output stream. 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.If this operator is order preserving, all input streams must be ordered and merged into several ordered output streams. Se l'output è partizionato, la colonna Argument contiene un predicato PARTITION COLUMNS:() e le colonne di partizionamento, mentre se l'output è ordinato, la colonna Argument contiene un predicato ORDER BY:() e le colonne da ordinare.If the output is partitioned, the Argument column contains a PARTITION COLUMNS:() predicate and the partitioning columns.If the output is ordered, the Argument column contains an ORDER BY:() predicate and the columns being ordered. Repartition Streams è un operatore logico.Repartition Streams is a logical operator. L'operatore viene utilizzato solo nei piani di query parallele.The operator is used only in parallel query plans.
Icona dell'elemento di linguaggio ResultResult language element icon ResultResult L'operatore Result corrisponde ai dati restituiti alla fine di un piano di queryThe Result operator is the data returned at the end of a query plan. ed è in genere l'elemento radice di uno Showplan.This is usually the root element of a Showplan. Result è un elemento di linguaggio.Result is a language element.
Icona dell'operatore RID LookupRID lookup operator icon RID LookupRID Lookup RID Lookup implementa la funzionalità di ricerca tramite segnalibro in un heap mediante un identificatore di riga (RID) che viene passato all'operatore.RID Lookup is a bookmark lookup on a heap using a supplied row identifier (RID). La colonna Argument contiene l'etichetta del segnalibro utilizzata per la ricerca della riga nella tabella e il nome della tabella in cui viene cercata la riga.The Argument column contains the bookmark label used to look up the row in the table and the name of the table in which the row is looked up. RID Lookup è sempre utilizzato in combinazione con un operatore NESTED LOOP JOIN.RID Lookup is always accompanied by a NESTED LOOP JOIN. RID Lookup è un operatore fisico.RID Lookup is a physical operator. Per ulteriori informazioni sulle ricerche tramite segnalibro, vedere "Bookmark Lookup" nel blog su SQL Server in MSDN.For more information about bookmark lookups, see "Bookmark Lookup" on the MSDN SQL Server blog.
NessunoNone Right Anti Semi JoinRight 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).The Right Anti Semi Join operator outputs each row from the second (bottom) input when a matching row in the first (top) input does not exist. Una riga corrispondente è una riga conforme al predicato presente nella colonna Argument . Se non è presente alcun predicato, ogni riga viene interpretata come riga corrispondente.A matching row is defined as a row that satisfies the predicate in the Argument column (if no predicate exists, each row is a matching row). Right Anti Semi Join è un operatore logico.Right Anti Semi Join is a logical operator.
NessunoNone Right Outer JoinRight 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).The Right Outer Join operator returns each row that satisfies the join of the second (bottom) input with each matching row from the first (top) input. L'operatore restituisce inoltre ogni riga del secondo input alla quale non corrisponde una riga nel primo input, con join a valori NULL.It also returns any rows from the second input that had no matching rows in the first input, joined with NULL. Se nella colonna Argument non è presente un predicato di join, ogni riga viene interpretata come riga corrispondente.If no join predicate exists in the Argument column, each row is a matching row. Right Outer Join è un operatore logico.Right Outer Join is a logical operator.
NessunoNone Right Semi JoinRight Semi Join L'operatore Right Semi Join restituisce ogni riga del secondo input (inferiore) alla quale corrisponde una riga del primo input (superiore).The Right Semi Join operator returns each row from the second (bottom) input when there is a matching row in the first (top) input. Se nella colonna Argument non è presente un predicato di join, ogni riga viene interpretata come riga corrispondente.If no join predicate exists in the Argument column, each row is a matching row. Right Semi Join è un operatore logico.Right Semi Join is a logical operator.
Icona dell'operatore Row Count SpoolRow count spool operator icon Row Count SpoolRow Count Spool L'operatore Row Count Spool esegue l'analisi dell'input calcolando e restituendo il numero di righe presenti senza alcun dato.The Row Count Spool operator scans the input, counting how many rows are present and returning the same number of rows without any data in them. Questo operatore viene utilizzato quando è importante verificare l'esistenza delle righe anziché i dati contenuti nelle righe.This operator is used when it is important to check for the existence of rows, rather than the data contained in the rows. Ad esempio, se un operatore Nested Loops esegue un'operazione di left semi join e il predicato di join è relativo all'input interno, è possibile che nella parte superiore dell'input interno dell'operatore Nested Loops venga inserito uno spooler di conteggio righe.For example, if a Nested Loops operator performs a left semi join operation and the join predicate applies to inner input, a row count spool may be placed at the top of the inner input of the Nested Loops operator. In tal modo l'operatore Nested Loops può registrare il numero di righe di output indicate dallo spooler di conteggio righe (i dati dell'input interno non sono necessari) e determinare se restituire la riga esterna.Then the Nested Loops operator can determine how many rows are output by the row count spool (because the actual data from the inner side is not needed) to determine whether to return the outer row. Row Count Spool è un operatore fisico.Row Count Spool is a physical operator.
Icona dell'operatore SegmentSegment operator icon SegmentSegment Segment è un operatore fisico e logicoSegment is a physical and a logical operator. L'operatore divide il set di input in segmenti in base al valore di una o più colonneIt divides the input set into segments based on the value of one or more columns. Tali colonne vengono visualizzate come argomenti nell'operatore SegmentThese columns are shown as arguments in the Segment operator. e quindi restituisce un segmento per volta.The operator then outputs one segment at a time.
NessunoNone Segment RepartitionSegment Repartition In un piano di query parallele sono presenti talvolta regioni concettuali di iteratori.In a parallel query plan, sometimes there are conceptual regions of iterators. È possibile eseguire tutti gli iteratori all'interno di tale regione mediante thread paralleli.All of the iterators within such a region can be executed by parallel threads. Le regioni devono invece essere eseguite in modalità seriale.The regions themselves must be executed serially. Alcuni iteratori Parallelism all'interno di una singola regione sono denominati Branch Repartition.Some of the Parallelism iterators within an individual region are called Branch Repartition. L'operatore Parallelism al confine tra due regioni di questo tipo viene denominato Segment Repartition.The Parallelism iterator at the boundary of two such regions is called Segment Repartition. Branch Repartition e Segment Repartition sono operatori logici.Branch Repartition and Segment Repartition are logical operators.
Icona dell'operatore SequenceSequence operator icon SequenceSequence L'operatore Sequence indirizza i piani di aggiornamento estesi.The Sequence operator drives wide update plans. A livello funzionale l'operatore esegue ogni input in sequenza (dall'alto verso il basso).Functionally, it executes each input in sequence (top to bottom). Ogni input è in genere un aggiornamento di un oggetto diverso.Each input is usually an update of a different object. L'operatore restituisce soltanto le righe derivanti dall'ultimo input (inferiore).It returns only those rows that come from its last (bottom) input. Sequence è un operatore logico e fisico.Sequence is a logical and physical operator.
Icona dell'operatore Sequence ProjectSequence project operator icon Sequence ProjectSequence Project L'operatore Sequence Project consente di aggiungere colonne per eseguire calcoli in un set ordinato.The Sequence Project operator adds columns to perform computations over an ordered set. L'operatore divide il set di input in segmenti in base al valore di una o più colonneIt divides the input set into segments based on the value of one or more columns. e quindi restituisce un segmento per volta.The operator then outputs one segment at a time. Tali colonne vengono visualizzate come argomenti nell'operatore Sequence Project .These columns are shown as arguments in the Sequence Project operator. Sequence Project è un operatore logico e fisico.Sequence Project is a logical and physical operator.
Icona dell'operatore Snapshot per il cursoreSnapshot cursor operator icon SnapshotSnapshot L'operatore Snapshot crea un cursore che non consente di visualizzare le modifiche apportate da altri utenti.The Snapshot operator creates a cursor that does not see changes made by others.
Icona dell'operatore SortSort operator icon SortSort L'operatore Sort ordina tutte le righe in ingresso.The Sort operator sorts all incoming rows. La colonna Argument contiene un predicato DISTINCT ORDER BY:() se tramite l'operazione vengono eliminati i duplicati oppure un predicato ORDER BY:() con un elenco delimitato da virgole in cui sono incluse le colonne ordinate.The Argument column contains either a DISTINCT ORDER BY:() predicate if duplicates are removed by this operation, or an ORDER BY:() predicate with a comma-separated list of the columns being sorted. Alle colonne viene assegnato il prefisso ASC se sono ordinate in ordine crescente o il prefisso DESC se sono ordinate in ordine decrescente.The columns are prefixed with the value ASC if the columns are sorted in ascending order, or the value DESC if the columns are sorted in descending order. Sort è un operatore logico e fisico.Sort is a logical and physical operator.
Icona dell'operatore SplitSplit operator icon SplitSplit L'operatore Split consente di ottimizzare l'elaborazione degli aggiornamenti.The Split operator is used to optimize update processing. Ogni operazione di aggiornamento viene suddivisa in un'operazione di eliminazione e un'operazione di inserimento.It splits each update operation into a delete and an insert operation. Split è un operatore logico e fisico.Split is a logical and physical operator.
Icona dell'operatore SpoolSpool operator icon SpoolSpool L'operatore Spool salva risultati di query intermedi nel database tempdb .The Spool operator saves an intermediate query result to the tempdb database.
Icona dell'operatore Stream AggregateStream aggregate operator icon Stream AggregateStream 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.The Stream Aggregate operator groups rows by one or more columns and then calculates one or more aggregate expressions returned by the 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.The output of this operator can be referenced by later operators in the query, returned to the client, or both. Per l'operatore Stream Aggregate è necessario che l'input sia ordinato in base alle colonne all'interno del relativo gruppo.The Stream Aggregate operator requires input ordered by the columns within its groups. 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.The optimizer will use a Sort operator prior to this operator if the data is not already sorted due to a prior Sort operator or due to an ordered index seek or scan. Nell'istruzione SHOWPLAN_ALL o nel piano di esecuzione grafico in SQL Server Management StudioSQL Server Management Studiole colonne incluse nel predicato GROUP BY sono elencate nella colonna Argument , mentre le espressioni di aggregazione sono elencate nella colonna Defined Values .In the SHOWPLAN_ALL statement or the graphical execution plan in SQL Server Management StudioSQL Server Management Studio, the columns in the GROUP BY predicate are listed in the Argument column, and the aggregate expressions are listed in the Defined Values column. Stream Aggregate è un operatore fisico.Stream Aggregate is a physical operator.
Icona dell'operatore SwitchSwitch operator icon OpzioneSwitch Opzione è un tipo speciale di iteratore di concatenazione che prevede n input.Switch is a special type of concatenation iterator that has n inputs. A ogni operatore Switch è associata un'espressione.An expression is associated with each Switch operator. In base al valore restituito dall'espressione (compreso tra 0 e n-1), l'operatore Opzione copia il flusso di input appropriato nel flusso di output.Depending on the return value of the expression (between 0 and n-1), Switch copies the appropriate input stream to the output stream. 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 .One use of Switch is to implement query plans involving fast forward cursors with certain operators such as the TOP operator. Switch è un operatore logico e fisico.Switch is both a logical and physical operator.
Icona dell'operatore Table DeleteTable delete operator icon Table DeleteTable Delete L'operatore Table Delete fisico elimina righe dalla tabella specificata nella colonna Argument del piano di esecuzione della query.The Table Delete physical operator deletes rows from the table specified in the Argument column of the query execution plan.
Icona dell'operatore Table InsertTable insert operator icon Table InsertTable Insert L'operatore Table Insert inserisce righe dal proprio input nella tabella specificata nella colonna Argument del piano di esecuzione della query.The Table Insert operator inserts rows from its input into the table specified in the Argument column of the query execution plan. La colonna Argument include anche un predicato SET:(), che indica il valore su cui viene impostata ogni colonna.The Argument column also contains a SET:() predicate, which indicates the value to which each column is set. Se in Table Insert non sono disponibili figli per i valori Insert, la riga inserita verrà recuperata dall'operatore Insert stesso.If Table Insert has no children for insert values, then the row inserted is taken from the Insert operator itself. Table Insert è un operatore fisico.Table Insert is a physical operator.
Icona dell'operatore Table MergeTable merge operator Table MergeTable Merge L'operatore Table Merge applica un flusso di dati di unione a un heap.The Table Merge operator applies a merge data stream to a heap. L'operatore elimina, aggiorna o inserisce righe nella tabella specificata nella colonna dell'argomento dell'operatore.The operator deletes, updates, or inserts rows in the table specified in the Argument column of the operator. L'operazione effettiva eseguita dipende dal valore di runtime della colonna ACTION specificato nella colonna Argument dell'operatore.The actual operation performed depends on the run-time value of the ACTION column specified in the Argument column of the operator. Table Merge è un operatore fisico.Table Merge is a physical operator.
Icona dell'operatore Table ScanTable scan operator icon Table ScanTable Scan L'operatore Table Scan recupera tutte le righe dalla tabella specificata nella colonna Argument del piano di esecuzione della query.The Table Scan operator retrieves all rows from the table specified in the Argument column of the query execution plan. Se nella colonna Argument è presente un predicato WHERE:(), vengono restituite solo le righe conformi al predicato.If a WHERE:() predicate appears in the Argument column, only those rows that satisfy the predicate are returned. Table Scan è un operatore logico e fisico.Table Scan is a logical and physical operator.
Icona dell'operatore Table SpoolTable spool operator icon Table SpoolTable 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.The Table Spool operator scans the input and places a copy of each row in a hidden spool table that is stored in the tempdb database and existing only for the lifetime of the query. Se l'operatore viene ripristinato, ad esempio tramite un operatore Nested Loops , ma non è necessario eseguire nuovamente l'associazione, l'analisi dell'input non viene ripetuta e vengono invece usati i dati di spooling.If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input. Table Spool è un operatore fisico.Table Spool is a physical operator.
Icona dell'operatore Table UpdateTable update operator icon Table UpdateTable Update L'operatore fisico Table Update aggiorna le righe di input nella tabella specificata nella colonna Argument del piano di esecuzione della query.The Table Update physical operator updates input rows in the table specified in the Argument column of the query execution plan. Il predicato SET:() determina il valore di ogni colonna aggiornata.The SET:() predicate determines the value of each updated column. Un riferimento a tali valori può essere presente nella clausola SET o in altri punti dell'operatore o nella query.These values may be referenced in the SET clause or elsewhere within this operator as well as elsewhere within this query.
Icona dell'operatore Table-valued FunctionTable-valued function operator icon Table-valued FunctionTable-valued Function L'operatore Table-valued Function valuta una funzione con valori di tabella ( Transact-SQLTransact-SQL o CLR) e archivia le righe risultanti nel database tempdb .The Table-valued Function operator evaluates a table-valued function (either Transact-SQLTransact-SQL or CLR), and stores the resulting rows in the tempdb database. Quando gli iteratori del padre richiedono le righe, Table-valued Function restituisce le righe da tempdb.When the parent iterators request the rows, Table-valued Function returns the rows from tempdb.

Le query con chiamate a funzioni con valori di tabella generano piani di query con l'iteratore Table-valued Function .Queries with calls to table-valued functions generate query plans with the Table-valued Function iterator. Table-valued Function può essere valutato con valori di parametri diversi:Table-valued Function can be evaluated with different parameter values:

-
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.Table-valued Function XML Reader inputs an XML BLOB as a parameter and produces a rowset representing XML nodes in XML document order. Altri parametri di input possono limitare i nodi XML restituiti a un subset di un documento XML.Other input parameters may restrict XML nodes returned to a subset of XML document.

-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 XML Reader with XPath filter is a special type of XML Reader Table-valued Function that restricts output to XML nodes satisfying an XPath expression.

Table-valued Function è un operatore logico e fisico.Table-valued Function is a logical and physical operator.
Icona dell'operatore TopTop operator icon TopTop 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.The Top operator scans the input, returning only the first specified number or percent of rows, possibly based on a sort order. La colonna Argument può includere l'elenco delle colonne in cui si verifica la presenza di collegamenti.The Argument column can contain a list of the columns that are being checked for ties. Nei piani di aggiornamento l'operatore Top consente di applicare limiti di conteggio righe.In update plans, the Top operator is used to enforce row count limits. Top è un operatore logico e fisico.Top is a logical and physical operator.
NessunoNone Top N SortTop N Sort Top N Sort è simile all'iteratore Sort , ma richiede solo le prime N righe non l'intero set di risultati.Top N Sort is similar to the Sort iterator, except that only the first N rows are needed, and not the entire result set. Per valori bassi di N, il motore di esecuzione delle query di SQL ServerSQL Server prova a eseguire l'intera operazione di ordinamento in memoria.For small values of N, the SQL ServerSQL Server query execution engine attempts to perform the entire sort operation in memory. 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.For large values of N, the query execution engine resorts to the more generic method of sorting to which N is not a parameter.
Icona di operatore esteso (UDX)Extended operator (UDX) icon UDXUDX Gli operatori estesi (UDX) implementano una delle varie operazioni XQuery e XPath in SQL ServerSQL Server.Extended Operators (UDX) implement one of many XQuery and XPath operations in SQL ServerSQL Server. Tutti gli operatori UDX sono logici e fisici.All UDX operators are both logical and physical operators.

L'operatore esteso (UDX) FOR XML è usato per serializzare gli input del set di righe relazionale nella rappresentazione XML in un'unica colonna BLOB in un'unica riga di output.Extended operator (UDX) FOR XML is used to serialize the relational row set it inputs into XML representation in a single BLOB column in a single output row. È un operatore di aggregazione XML sensibile all'ordinamento.It is an order sensitive XML aggregation operator.

L'operatore esteso (UDX) XML SERIALIZER è un operatore di aggregazione XML sensibile all'ordinamento.Extended operator (UDX) XML SERIALIZER is an order sensitive XML aggregation operator. 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.It inputs rows representing XML nodes or XQuery scalars in XML document order and produces a serialized XML BLOB in a single XML column in a single output row.

L'operatore esteso (UDX) XML FRAGMENT SERIALIZER è un particolare tipo di XML SERIALIZER usato per l'elaborazione delle righe di input che rappresentano frammenti XML da inserire nell'estensione INSERT di XQuery per la modifica di dati.Extended operator (UDX) XML FRAGMENT SERIALIZER is a special type of XML SERIALIZER that is used for processing input rows representing XML fragments being inserted in XQuery insert data modification extension.

L'operatore esteso (UDX) XQUERY STRING valuta il valore stringa XQuery delle righe di input che rappresentano i nodi XML.Extended operator (UDX) XQUERY STRING evaluates the XQuery string value of input rows representing XML nodes. È un operatore di aggregazione di stringa sensibile all'ordinamento.It is an order sensitive string aggregation operator. Restituisce come output una riga con colonne che rappresentano il valore scalare XQuery che include il valore stringa dell'input.It outputs one row with columns representing the XQuery scalar that contains string value of the input.

L'operatore esteso (UDX) XQUERY LIST DECOMPOSER è un operatore di scomposizione di elenco XQuery.Extended operator (UDX) XQUERY LIST DECOMPOSER is an XQuery list decomposition operator. 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.For each input row representing an XML node it produces one or more rows each representing XQuery scalar containing a list element value if the input is of XSD list type.

L'operatore esteso (UDX) XQUERY DATA valuta la funzione XQuery fn:data() rispetto all'input che rappresenta i nodi XML.Extended operator (UDX) XQUERY DATA evaluates the XQuery fn:data() function on input representing XML nodes. È un operatore di aggregazione di stringa sensibile all'ordinamento.It is an order sensitive string aggregation operator. Restituisce come output una riga con colonne che rappresentano il valore scalare XQuery che include il risultato di fn:data().It outputs one row with columns representing XQuery scalar that contains the result of fn:data().

L'operatore esteso XQUERY CONTAINS valuta la funzione XQuery fn:contains() rispetto all'input che rappresenta i nodi XML.Extended operator XQUERY CONTAINS evaluates the XQuery fn:contains() function on input representing XML nodes. È un operatore di aggregazione di stringa sensibile all'ordinamento.It is an order sensitive string aggregation operator. Restituisce come output una riga con colonne che rappresentano il valore scalare XQuery che include il risultato di fn:contains().It outputs one row with columns representing XQuery scalar that contains the result of fn:contains().

L'operatore esteso UPDATE XML NODE aggiorna il nodo XML nell'estensione di modifica dei dati di sostituzione XQuery nel metodo modify() sul tipo XML.Extended operator UPDATE XML NODE updates XML node in the XQuery replace data modification extension in the modify() method on XML type.
NessunoNone UnionUnion L'operatore Union esegue l'analisi di più input e restituisce ogni riga sottoposta ad analisi rimuovendo i duplicati.The Union operator scans multiple inputs, outputting each row scanned and removing duplicates. L'operatoreUnion è un operatore logico.Union is a logical operator.
Icona dell'operatore Update (motore di database)Update (Database Engine) operator icon UpdateUpdate L'operatore Update aggiorna ogni riga dal proprio input nell'oggetto specificato nella colonna Argument del piano di esecuzione della query.The Update operator updates each row from its input in the object specified in the Argument column of the query execution plan. Update è un operatore logico.Update is a logical operator. L'operatore fisico è Table Update, Index Updateo Clustered Index Update.The physical operator is Table Update, Index Update, or Clustered Index Update.
Icona dell'elemento di linguaggio WhileWhile language element icon WhileWhile L'operatore While implementa il ciclo while di Transact-SQLTransact-SQL .The While operator implements the Transact-SQLTransact-SQL while loop. While è un elemento di linguaggio.While is a language element
Icona dell'operatore Table SpoolTable spool operator icon Window SpoolWindow Spool L'operatore Window Spool espande ogni riga nel set di righe che rappresenta la finestra associata.The Window Spool operator expands each row into the set of rows that represents the window associated with it. 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.In a query, the OVER clause defines the window within a query result set and a window function then computes a value for each row in the window. Window Spool è un operatore logico e fisico.Window Spool is a logical and physical operator.