Referência de operador lógico e físico para o plano de execução

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureBanco de Dados SQL no Microsoft Fabric

Os operadores descrevem como o Mecanismo de Banco de Dados do SQL Server executa uma consulta. O Otimizador de Consulta usa operadores para criar um plano de consulta para criar o resultado ou executar a operação especificada na consulta. O plano de consulta é uma árvore que consiste em operadores físicos. O operador mais à esquerda é a raiz, que controla a execução geral. Para uma SELECT instrução, a raiz normalmente retorna um conjunto de resultados para o cliente. Para instruções de modificação de dados (INSERT, UPDATE, , DELETEMERGE) ou instruções como SELECT...INTO, a raiz conduz a modificação e pode não retornar linhas. Operadores sem entradas, posicionados no extremo direito da árvore, são nós folha que geralmente leem dados do armazenamento. Operadores intermediários transformam, filtram ou unem dados à medida que fluem da direita para a esquerda por meio do plano.

É possível exibir o plano de consulta ao usar as instruções SET SHOWPLAN, as opções do plano de execução gráfico no SQL Server Management Studio ou os eventos do plano de execução de Eventos Estendidos.

Tipos de operador

Os operadores são classificados como lógicos e físicos.

Operadores lógicos

Operadores lógicos descrevem a operação algébrica relacional usada para processar uma consulta. Em outras palavras, operadores lógicos descrevem conceitualmente qual operação precisa ser executada.

Operadores físicos

Os operadores físicos implementam a operação descrita pelos operadores lógicos. Cada operador físico é um objeto ou uma rotina que executa uma operação. Por exemplo, alguns operadores físicos acessam colunas ou linhas de uma tabela, índice ou exibição. Outros operadores físicos realizam operações como cálculos, agregações, verificações de integridade de dados ou junções. Os operadores físicos possuem custos associados.

Os operadores físicos iniciam, coletam dados e fecham. Especificamente, o operador físico pode responder às três chamadas de método abaixo:

  • Open(): o método Open() faz com que um operador físico realize a inicialização e a configuração das estruturas de dados necessárias. Embora o operador físico possa receber muitas chamadas Open(), geralmente ele recebe apenas uma.

  • GetRow(): o método GetRow() faz com que um operador físico obtenha a primeira linha de dados ou a linha seguinte. O operador físico pode receber zero ou muitas chamadas GetRow().

  • Close(): o método Close() faz com que um operador físico execute algumas operações de limpeza e torne-se inativo. Um operador físico recebe apenas uma chamada Close(), mas uma chamada Close() nem sempre é garantida.

O GetRow() método retorna uma linha de dados e o número de vezes que é chamado aparece como ActualRows na saída do plano de execução produzido pelo plano de exibição gráfico e XML. Para obter mais informações sobre essas SET opções, consulte SET STATISTICS PROFILE e SET STATISTICS XML.

Elementos de linguagem

Alguns operadores em um plano de consulta representam elementos Transact-SQL language em vez de operações relacionais. Eles incluem constructos como atribuição de variável, conversão de tipo e fluxo de controle (IF/WHILE). Os elementos de linguagem não são classificados como operadores lógicos ou físicos.

Rebinds, retrocessos e fim de verificações

Os contadores a seguir aparecem na saída do plano de exibição e ajudam você a entender com que frequência um operador é executado novamente.

As contagens de ActualRebinds e ActualRewinds que aparecem na saída do showplan referem-se ao número de vezes que o método Open() foi invocado. A menos que um operador esteja no lado interno de uma junção de loops aninhados, ActualRebinds será igual a um e ActualRewinds será igual a zero. Se um operador estiver no lado interno de uma junção de loop, o número total de reassociações e retrocessos deverá ser igual ao número de linhas processadas no lado externo da junção. Uma reassociação significa que um ou mais dos parâmetros correlatos da junção se alterou e o lado interno deve ser reavaliado. Uma reinicialização significa que nenhum dos parâmetros correlacionados foi alterado e o conjunto de resultados interno anterior pode ser reutilizado.

ActualRebinds e ActualRewinds estão presentes na saída do plano de execução XML produzida ao usar SET STATISTICS XML ON e o plano de execução gráfico. Eles são preenchidos para operadores como Index Spool, Remote Query, Row Count Spool, Sort, Table Spool e Table-valued Function. ActualRebinds e ActualRewinds também podem ser preenchidos para operadores como Assert e Filter quando o atributo StartupExpression é definido como TRUE.

Quando ActualRebinds e ActualRewinds estiverem presentes em um plano de execução XML, serão comparáveis a EstimateRebinds e EstimateRewinds. Quando estiverem ausentes, o número estimado de linhas (EstimateRows) será comparável ao número real de linhas (ActualRows). A saída do plano de execução gráfico real exibe zeros para as reassociações e retrocessos reais quando eles estão ausentes.

Um contador relacionado, ActualEndOfScans, está disponível no plano de execução XML e gráfico. Sempre que um operador físico alcança o final do seu fluxo de dados, esse contador é incrementado em um. Um operador físico pode chegar ao término de seu fluxo de dados zero, uma ou mais vezes. De forma semelhante a como acontece com as reassociações e os retrocessos, a contagem de término do processo de verificação poderá ser superior a um somente se o operador estiver no lado interno de uma junção de loop. A contagem final de digitalizações deve ser menor ou igual à soma do número de rebindings e rebobinagens.

Como o Otimizador de Consulta mapeia operadores lógicos e físicos

O otimizador de consulta criará um plano de consulta no formato de árvore que consistirá em operadores lógicos. Depois que o Otimizador de Consulta cria o plano, ele escolhe um operador físico para cada operador lógico. O Otimizador de Consulta usa uma abordagem baseada em custo para determinar qual operador físico implementa um operador lógico.

Normalmente, uma operação lógica pode ser implementada por diversos operadores físicos. Em alguns casos raros, porém, um operador físico também pode implementar diversas operações lógicas.

Execução em modo de lote

A execução em modo de lote corresponde a um método de processamento de consulta usado para processar várias linhas simultaneamente (por isso o termo lote) em vez de uma linha por vez. O processamento em modo de lote usa algoritmos otimizados para CPUs com vários núcleos e maior produtividade de memória em um hardware moderno. O modo de lote pode ser utilizado por um conjunto de operadores para objetos de armazenamento em linhas (rowstore) e armazenamento em colunas (columnstore). Para obter mais informações, consulte Guia da Arquitetura de Processamento de Consultas.

Como ler um plano de execução

No plano de execução gráfica, as setas apontam da direita para a esquerda, representando o fluxo de dados. Em tempo de execução, isso funciona na direção oposta: os operadores são baseados em pull e só funcionam quando solicitados dados.

O operador raiz chama GetRow() seu filho, que chama seus próprios filhos, até que um nó folha leia uma linha do armazenamento e a retorne para cima da cadeia. Uma Verificação de Índice Clusterizado em um operador Top , por exemplo, não verifica toda a tabela. A verificação é interrompida assim que Top tiver linhas suficientes. No modo de lote, cada chamada retorna um lote de linhas em vez de uma única linha. Ambas as direções de leitura são úteis: da direita para a esquerda mostra quais dados entram em cada operador, enquanto da esquerda para a direita mostra qual operador conduz o trabalho.

Descrições dos operadores

Esta seção contém descrições dos operadores lógicos e físicos. Você pode exibir as propriedades de planos de consulta e operadores usando o painel Propriedades na exibição Plano de Consulta do SSMS (SQL Server Management Studio).

Dica

Sempre que um determinado ícone de plano de execução gráfica tiver um círculo amarelo com duas setas da direita para a esquerda, isso significa que o operador foi executado em paralelo. Para obter mais informações sobre paralelismo, confira o Guia de arquitetura de threads e tarefas.

Ícone Operador de plano de execução Descrição
Junção Adaptável O operador de Junção Adaptável permite que a escolha entre o método de junção hash ou de junção por loops aninhados seja adiada até após a leitura da primeira entrada.

O Adaptive Join é um operador físico. Para obter mais informações, confira Noções básicas sobre junções adaptáveis.
Aggregate O operador Aggregate calcula expressões que contêm uma ou mais funções de agregação.

A agregação é um operador lógico. Ele pode ser implementado pelo operador Stream Aggregate, Hash Match, Window Aggregate ou UserDefinedAggregate (CLR).
Expressão aritmética O operador Arithmetic Expression computa um valor novo de valores existentes em uma linha. O Arithmetic Expression não é usado em versões mais recentes do SQL Server.
Assert O operador Assert verifica uma condição. Por exemplo, ele valida a integridade referencial ou garante que uma subconsulta escalar retorne uma linha. Para cada linha de entrada, o operador Assert avalia a expressão no painel Propriedades do plano de execução. Se essa expressão for avaliada como NULL, a linha será passada pelo operador Assert e a execução da consulta continuará. Se essa expressão for avaliada como um valor que não é nulo, o erro apropriado será gerado.

O Assert é um operador físico.
Atribuir O operador Assign atribui o valor de uma expressão ou constante a um variável.

Assign é um elemento de linguagem.
Nenhum Concatenação Assíncrona O operador Async Concat só é usado em consultas remotas (consultas distribuídas). Ele tem n filhos e um nó pai. Normalmente, alguns dos filhos são computadores remotos que participam de uma consulta distribuída. O Async Concat emite Open() chamadas simultaneamente a todos os filhos e aplica um bitmap para cada filho. Para cada bit que é um 1, o Async Concat envia as linhas de saída para o nó pai conforme necessário.

O Async Concat é um operador físico.
Construção de Tabela de Hash em Lote O operador Construção de Tabela Hash em Lote cria uma tabela de hash em lote para um índice columnstore otimizado para memória.

Aplica-se a: SQL Server 2012 (11.x) apenas.
Bitmap SQL Server usa o operador Bitmap para implementar filtros de bitmap em planos de consulta paralelos. A filtragem de bitmap acelera o processamento de consultas eliminando linhas com valores de chave que não podem produzir nenhum registro de junção antes de passar linhas por outro operador, como o operador Paralelismo . Um filtro de bitmap usa uma representação compacta de um conjunto de valores de uma tabela em uma parte da árvore de operadores para filtrar linhas de uma segunda tabela em outra parte da árvore. Com a remoção de linhas desnecessárias previamente na consulta, os operadores subsequentes têm menos linhas para trabalhar e o desempenho geral da consulta melhora. O otimizador de consulta determina quando um bitmap é seletivo o bastante para ser útil e em quais operadores aplicar o filtro.

Bitmap é um operador físico.
Criar bitmap O operador Bitmap Create aparece na saída do showplan onde os bitmaps são construídos.

Bitmap Create é um operador lógico.
Nenhum Repartição de Filial Às vezes, em um plano de consulta paralelo, há regiões conceituais de iteradores. Todos os iteradores dentro dessa região podem ser executados em threads paralelos. As próprias regiões devem ser executadas de forma sequencial. Alguns dos iteradores Parallelism em uma região individual são chamados Branch Repartition. O iterador Parallelism no limite dessas duas regiões é chamado Segment Repartition.

Branch Repartition e Segment Repartition são operadores lógicos.
Broadcast Broadcast tem um nó filho e n nós pais. Broadcast envia suas linhas de entrada para vários consumidores quando necessário. Cada consumidor recebe todas as linhas. Por exemplo, se todos os consumidores representam lados de desenvolvimento de uma junção hash, então n cópias das tabelas de hash são desenvolvidas.

Difusão é um operador lógico.
Exclusão de índice agrupado O operador Clustered Index Delete exclui as linhas do índice clusterizado especificado na propriedade Object, listada no painel Propriedades dos planos de execução gráfico e XML. Se um SeekPredicate ou um Predicate estiver presente, somente as linhas que satisfazem o predicado serão excluídas.

Nota: A propriedade Object pode listar índices não clusterizados adicionais que o operador modifica ao mesmo tempo que o índice clusterizado.

O Clustered Index Delete é um operador físico.
Inserção de índice clusterizado O operador Clustered Index Insert insere as linhas de sua entrada no índice clusterizado especificado na propriedade Object, listada no painel Propriedades dos planos de execução gráfico e XML. O plano de execução XML inclui propriedades SetPredicate e ColumnReference, que podem ser usadas para a determinação do valor para o qual cada coluna é definida. Se Clustered Index Insert não tiver filhos para os valores de inserção, a linha inserida será obtida do próprio operador Insert.

Nota: A propriedade Object pode listar índices não clusterizados adicionais que o operador modifica ao mesmo tempo que o índice clusterizado.

O Clustered Index Insert é um operador físico.
Mesclagem de índice agrupado O operador Clustered Index Merge aplica um fluxo de mesclagem de dados a um índice clusterizado. O operador exclui, atualiza ou insere linhas do índice clusterizado especificado na propriedade Object, listada no painel Propriedades dos planos de execução gráfico e XML. A operação real executada depende do valor de runtime da propriedade ActionColumn.

Nota: A propriedade Object pode listar índices não clusterizados adicionais que o operador modifica ao mesmo tempo que o índice clusterizado.

Clustered Index Merge é um operador físico.
Verificação de índice clusterizado O operador Clustered Index Scan verifica o índice clusterizado especificado na propriedade Object, listada no painel Propriedades dos planos de execução gráfico e XML. Quando um Predicate opcional está presente, somente as linhas que satisfazem o predicado são retornadas. Se a propriedade Ordered no painel Propriedades ou no plano de execução XML for True, o processador de consultas determinou que as linhas devem ser retornadas na ordem em que o índice clusterizado as classificou. Se a propriedade Ordered for False, o mecanismo de banco de dados varrerá o índice sem garantir a ordem da saída. A propriedade SeekPredicate só está disponível para um índice clusterizado particionado.

Clustered Index Scan é um operador lógico e físico.
Busca de índice clusterizado O operador Clustered Index Seek usa a habilidade de busca de índices para recuperar linhas de um índice cluster. A propriedade Object, listada no painel Propriedades dos planos de execução gráfico e XML, contém o nome do índice clusterizado que está sendo usado. O SeekPredicate contém o predicado da busca. O Mecanismo de Banco de Dados usa o índice para realizar o processamento somente das linhas que satisfazem o SeekPredicate. Além disso, é possível incluir uma propriedade Predicate na qual o Mecanismo de Banco de Dados avalia todas as linhas que satisfazem o SeekPredicate, mas isso é opcional e não usa índices para a conclusão desse processo. A propriedade Ordered normalmente é True para este operador.

Clustered Index Seek é um operador lógico e físico.
Atualização de índice clusterizado O operador Clustered Index Update realiza atualizações das linhas de entrada no índice clusterizado especificado na propriedade Object, listada no painel Propriedades dos planos de execução gráfico e XML. Se a propriedade Predicate estiver presente, somente as linhas que satisfazem esse predicado serão atualizadas. Se a propriedade SetPredicate estiver presente, cada coluna atualizada será definida com esse valor. Se a propriedade DefineValue estiver presente, os valores definidos por esse operador serão listados. Esses valores podem ser referenciados na cláusula SET ou em outro local desse operador e em outro local dessa consulta.

Nota: A propriedade Object pode listar índices não clusterizados adicionais que o operador modifica ao mesmo tempo que o índice clusterizado.

Clustered Index Update é um operador lógico e físico.
Recolher O operador Collapse otimiza processamento de atualização. Quando uma atualização é executada, ela pode ser dividida (usando o operador Split ) em uma exclusão e uma entrada. O painel Propriedades contém um predicado group by que especifica uma lista de colunas de chaves. Se o processador de consultas encontrar linhas adjacentes que excluem e inserem valores de chave semelhantes, ele substituirá essas operações separadas por uma operação de atualização única e mais eficiente.

Collapse é um operador lógico e físico.
Exclusão do índice Columnstore O operador Columnstore Index Delete representa a exclusão de linhas do índice columnstore especificado na propriedade Object, listada no painel Propriedades dos planos de execução gráfico e XML. A exclusão ocorre por meio do Clustered Index Delete para um índice columnstore clusterizado e por meio do operador Index Delete para um índice columnstore não clusterizado. O tipo de índice (Clustered, NonClustered, ViewClustered ou ViewNonClustered) é especificado na propriedade IndexKind no plano de exibição XML. O SeekPredicate não tem suporte para um Delete de Índice Columnstore. As linhas a serem excluídas são lidas de um operador subordinado.

O Columnstore Index Delete é um operador físico.
Inserção de índice columnstore O operador Columnstore Index Insert representa a inserção de linhas da entrada no índice columnstore especificado na propriedade Object, listada no painel Propriedades dos planos de execução gráfico e XML. A inserção ocorre por meio do Clustered Index Insert para um índice columnstore clusterizado e por meio do operador Index Insert para um índice columnstore não clusterizado. O tipo de índice (Clustered, NonClustered, ViewClustered ou ViewNonClustered) é especificado na propriedade IndexKind no plano de exibição XML. O plano de execução XML inclui propriedades SetPredicate e ColumnReference, que podem ser usadas para a determinação do valor para o qual cada coluna é definida.

O Columnstore Index Insert é um operador físico.
Mesclagem de Índice Columnstore O Columnstore Index Merge representa a aplicação de um fluxo de dados de mesclagem usando o operador Clustered Index Merge. O operador exclui, atualiza ou insere linhas do índice columnstore clusterizado especificado na propriedade Object, listada no painel Propriedades dos planos de execução gráfico e XML. O tipo de índice (Clustered, NonClustered, ViewClustered ou ViewNonClustered) é especificado na propriedade IndexKind no plano de exibição XML. A operação real executada depende do valor de runtime da propriedade ActionColumn.

O Columnstore Index Merge é um operador físico.
Verificação de Índice Columnstore O operador Columnstore Index Scan representa uma varredura do índice columnstore especificado na propriedade Object, listada no painel Propriedades dos planos de execução gráfico e XML. O processo de verificação ocorre por meio do Clustered Index Scan para um índice columnstore clusterizado e por meio do operador Index Scan para um índice columnstore não clusterizado. O tipo de índice (Clustered, NonClustered, ViewClustered ou ViewNonClustered) é especificado na propriedade IndexKind no plano de exibição XML. Quando um Predicate opcional está presente, somente as linhas que satisfazem o predicado são retornadas. A propriedade SeekPredicate está disponível somente para um índice columnstore particionado e apenas para condições de igualdade ou de desigualdade. Se a coluna particionada estiver no predicado de consulta, a eliminação de partição e a eliminação de rowgroup poderão reduzir o número de rowgroups a serem verificados.

O Columnstore Index Scan é um operador físico.
Atualização do índice columnstore O operador Columnstore Index Update representa uma atualização de uma ou mais linhas do índice columnstore especificado na propriedade Object, listada no painel de Propriedades dos showplans gráficos e XML. As atualizações ocorrem por meio do operador Clustered Index Update para um índice columnstore clusterizado e por meio do operador Index Update para um índice columnstore não clusterizado. O tipo de índice (Clustered, NonClustered, ViewClustered ou ViewNonClustered) é especificado na propriedade IndexKind no plano de exibição XML. O SeekPredicate não tem suporte para uma Atualização de Índice Columnstore. As linhas a serem atualizadas são lidas de um operador filho. Se a propriedade SetPredicate estiver presente, cada coluna atualizada será definida com esse valor. Se a propriedade DefineValue estiver presente, os valores definidos por esse operador serão listados. Esses valores podem ser referenciados na cláusula SET ou em outro local desse operador e em outro local dessa consulta.

O Columnstore Index Update é um operador físico.
Compute Scalar O operador Compute Scalar avalia uma expressão para produzir um valor escalar computado. Em seguida, isso pode ser retornado ao usuário, referenciado em outra parte da consulta ou ambos. Um exemplo de ambos está em um predicado de filtro ou predicado de junção.

Os operadores Compute Scalar que aparecem nos planos de execução gerados por SET STATISTICS XML podem não conter o elemento RunTimeInformation. Em planos de execução gráficos, Actual Rows, Actual Rebinds e Actual Rewinds poderão estar ausentes da janela Propriedades quando a opção Incluir Plano de Execução Real estiver selecionada no SQL Server Management Studio. Quando isso ocorre, significa que, embora esses operadores tenham sido utilizados no plano de consulta compilada, o trabalho foi executado por outros operadores no plano de consulta de runtime. O número de execuções na saída do plano de execução gerada por SET STATISTICS PROFILE é equivalente à soma de reassociações e retrocessos nos planos de execução gerados por SET STATISTICS XML.

OCompute Scalar é um operador lógico e físico.
Concatenação O operador Concatenation verifica várias entradas, retornando cada linha verificada. Geralmente, o Concatenation é usado para implementar o constructo UNION ALL do Transact-SQL. O operador físico Concatenation tem duas ou mais entradas e uma saída. Concatenation copia linhas do primeiro fluxo de entrada ao fluxo de saída e repete essa operação para cada fluxo de entrada adicional.

Concatenation é um operador lógico e físico.
Conditional (If e While) O operador Conditional realiza um processamento condicional com base em um loop IF ou WHILE. If e While são elementos de linguagem.
Verificação constante O operador Constant Scan introduz uma ou mais linhas constantes em uma consulta. Um operador Compute Scalar é frequentemente usado após uma Constant Scan para acrescentar colunas a uma linha produzida pelo operador Constant Scan . O Constant Scan pode gerar uma ou mais linhas com zero ou mais colunas.

Constant Scan é um operador físico.
Converter O operador Convert converte um tipo de dados escalar em outro.

Convert é um elemento de linguagem.
Cross Join O operador Cross Join une cada linha da primeira entrada (superior) a cada linha da segunda entrada (inferior).

Cross Join é um operador lógico.
Cursor Os operadores lógicos e físicos Cursor são usados para descrever como é executada uma consulta ou atualização que envolva operações de cursor. Os operadores físicos descrevem o algoritmo de implementação físico usado para processar o cursor; por exemplo, usando um cursor controlado por conjunto de chaves. Cada etapa ao executar um cursor envolve um operador físico. Os operadores lógicos descrevem uma propriedade do cursor, como o caso em que o cursor é somente leitura.

Os operadores lógicos incluem Asynchronous, Optimistic, Primary, Read Only, Scroll Locks, Secondary e Synchronous.

Os operadores físicos incluem Dynamic, Fetch Query, Keyset, Population Query, Refresh Query e Snapshot.
Declare O operador Declare aloca uma variável local no plano de consulta.

Declare é um elemento de linguagem.
Delete (excluir) O operador Delete exclui linhas (de um objeto) que atendem ao predicado opcional no painel Propriedades.

Delete é um operador lógico.
Escaneamento Excluído Nos gatilhos, o operador Deleted Scan escaneia a tabela deleted.

O Scan Excluído é um operador lógico e físico.
Nenhum Distinto O operador Distinct remove duplicatas de um conjunto de linhas ou de uma coleção de valores.

Distinct é um operador lógico.
Nenhum Classificação Distinta O operador lógico Distinct Sort verifica a entrada ao remover duplicatas e classificar pelas colunas especificadas no predicado distinct order by do painel Propriedades.

Distinct Sort é um operador lógico.
Distribuir Fluxos O operador Distribute Streams só é usado em planos de consulta paralelos. O operador Distribute Streams leva um fluxo de entrada simples de registros e produz fluxos de saída múltiplos. O conteúdo e o formato do registro não sofrem alterações. Cada registro do fluxo de entrada aparece em um dos fluxos de saída, a menos que o tipo de particionamento seja Difusão, nesse caso, cada linha de entrada aparece em todos os fluxos de saída. Este operador preserva automaticamente a ordem relativa dos registros de entrada nos fluxos de saída. Normalmente, são usadas operações de hash para decidir a qual fluxo de saída pertence um determinado registro de entrada.

Se a saída for particionada, o painel Propriedades conterá um predicado partition columns e as colunas de particionamento.

Distribuir Fluxos é um operador lógico.
Dinâmico O operador Dynamic usa um cursor que pode ver todas as alterações feitas por outros.

Dinâmico é um operador físico.
Eager Spool O operador Eager Spool pega toda a entrada, armazenando cada linha em um objeto temporário oculto armazenado no banco de dados tempdb . Se o operador for rebobinado (por exemplo, por um operador Nested Loops) sem necessidade de nova associação, os dados em spool são utilizados em vez de rever a entrada. Se a reassociação for necessária, os dados em spool serão descartados e o objeto de spool será recriado por meio de rescanear a entrada (reassociação). O operador Eager Spool cria seu arquivo de spool de maneira “ávida”, ou seja, cada vez que o operador pai do spool solicita a primeira linha, o operador de spool consome todas as linhas de seu operador de entrada e as armazena no spool.

OEager Spool é um operador lógico.
Recuperar Consulta O operador Fetch Query recupera linhas quando é feita uma busca em um cursor.

Fetch Query é um operador físico.
Filter O operador Filter verifica a entrada ao retornar somente as linhas que satisfazem a expressão de filtro (predicado) que aparece no painel Propriedades.
Nenhum Fluxo Distinto O operador Flow Distinct verifica a entrada ao remover duplicatas. Enquanto o operador Distinct consome todas as entradas antes de produzir saídas, o operador Flow Distinct retorna cada linha conforme obtida da entrada (a menos que essa linha seja duplicada; nesse caso, ela é descartada).

O Flow Distinct é um operador lógico.
Verificação de Referências de Chave Estrangeira O operador Foreign Key References Check executa verificações de integridade referencial no local ao comparar a linha modificada com as linhas nas tabelas de referência para verificar se a modificação não afeta a integridade referencial. O operador Verificação de Referências de Chave Estrangeira é usado quando mais de 253 referências de chave estrangeira existem na mesma chave primária ou exclusiva.

Verificação de Referências de Chave Estrangeira é um operador lógico e físico.
Junção externa total O operador lógico Full Outer Join retorna cada linha que satisfaz o predicado de junção da primeira entrada (parte superior) associada a cada linha da segunda entrada (parte inferior). Ele também retorna linhas de:

- A primeira entrada que não teve coincidência na segunda entrada.

- A segunda entrada que não teve correspondência na primeira entrada.

A entrada que não contém os valores correspondentes é retornada como um valor nulo.

Full Outer Join é um operador lógico.
Coletar fluxos O operador Gather Streams só é usado em planos de consulta paralelos. O operador Gather Streams consome vários fluxos de entrada e produz um único fluxo de saída de registros ao combinar os fluxos de entrada. O conteúdo e o formato do registro não sofrem alterações. Se este operador for preservador da ordem, todos os fluxos de entrada deverão ser ordenados. Se a saída for ordenada, o painel Propriedades conterá um predicado order by e os nomes das colunas que estão sendo ordenadas.

Gather Streams é um operador lógico.
Correspondência de hash O operador Hash Match cria uma tabela de hash computando um valor de hash para cada linha da entrada criada. Um predicado hash, com uma lista de colunas usadas para criar um valor de hash, aparece no painel Propriedades. Então, para cada fila de sondagem (conforme aplicável), ela computa um valor de hash (usando a mesma função de hash) e procura correspondências na tabela de hash. Se um predicado residual estiver presente (mostrado como Build Residual ou Probe Residual no painel Propriedades ), esse predicado também deverá ser satisfeito para que as linhas sejam consideradas uma correspondência. O comportamento depende da operação lógica que está sendo executada:

- Para as junções, use a primeira entrada (superior) para desenvolver a tabela de hash e a segunda entrada (inferior) para realizar a investigação da tabela de hash. As correspondências de saída (ou as não correspondências) conforme determinadas pelo tipo de junção. Se várias junções usam a mesma coluna de junção, essas operações serão agrupadas em uma equipe de hash.

- Para os operadores de distinção ou agregação, use a entrada para construir a tabela de hash (removendo as duplicatas e computando as expressões de agregação). Quando a tabela de hash for criada, varra a tabela e exiba todas as entradas.

- Para o operador de união, use a primeira entrada para desenvolver a tabela de hash, removendo duplicatas. Use a segunda entrada (sem duplicatas) para sondar a tabela de hash, retornando todas as linhas sem correspondência e depois percorra a tabela de hash e retorne todas as entradas.

Hash Match é um operador físico. Para obter mais informações, confira Noções básicas sobre junções hash.
Exclusão de índice O operador Index Delete exclui as linhas do índice não clusterizado especificado no painel Propriedades.

O Index Delete é um operador físico.
Inserção de Índice O operador Index Insert insere as linhas da entrada no índice não clusterizado especificado no painel Propriedades. O painel Propriedades também contém um predicado set, que indica o valor para o qual cada coluna está definida.

Index Insert é um operador físico.
Verificação de índice O operador Index Scan recupera todas as linhas do índice não clusterizado especificado no painel Propriedades. Se um predicado where opcional aparecer no painel Propriedades, somente as linhas que satisfazem o predicado serão retornadas. Se a propriedade Ordered for True, as linhas serão retornadas na ordem em que o índice não clusterizado as classificou. Se a propriedade Ordered for False, o mecanismo de banco de dados varrerá o índice sem garantir a ordem da saída.

Index Scan é um operador lógico e físico.
Busca de índice O operador Index Seek usa a capacidade de busca de índices para recuperar linhas de um índice não clusterizado. O painel Propriedades contém o nome do índice não clusterizado que está sendo usado. Ele também contém o predicado seek. O Mecanismo de Banco de Dados usa o índice para processar somente as linhas que satisfazem o predicado seek. Opcionalmente, ele pode incluir um predicado where, que o Mecanismo de Banco de Dados avalia em relação a todas as linhas que satisfazem o predicado seek (ele não usa os índices para fazer isso).

Index Seek é um operador lógico e físico.
Index Spool O operador Index Spool contém um predicado seek no painel Propriedades. O operador Index Spool verifica suas linhas de entrada, colocando uma cópia de cada linha em um arquivo de spool oculto (armazenado no banco de dados tempdb e existente apenas durante o tempo de vida da consulta) e cria um índice nas linhas. Isso permite que você use a funcionalidade de busca de índices para gerar somente as linhas que satisfazem o predicado seek.

O Index Spool é um operador físico.
Atualização de índice O operador físico Index Update realiza atualizações das linhas de entrada no índice não clusterizado especificado no painel Propriedades. Se um predicado set estiver presente, cada coluna atualizada será definida para esse valor.

O Index Update é um operador físico.
Junção Interna O operador Inner Join retorna cada linha que satisfaz o predicado de junção da primeira entrada (superior) com a segunda entrada (inferior).

O Inner Join é um operador lógico.
Inserção O operador Insert insere cada linha da entrada no objeto especificado no painel Propriedades. O operador físico é o operador Table Insert, Index Insertou Clustered Index Insert .

O Insert é um operador lógico.
Escaneamento Inserido Nos gatilhos, o operador Inserted Scan verifica a tabela inserida.

OInserted Scan é um operador lógico e físico.
Intrinsic O operador Intrinsic invoca uma função Transact-SQL interna.

Intrinsic é um elemento de linguagem.
Iterador O ícone genérico do Iterator é exibido quando um ícone adequado para o iterador não pode ser encontrado pela lógica que produz os planos de execução gráficos. O ícone genérico não indica necessariamente uma condição de erro.
Pesquisa de chave O operador Pesquisa de Chave é uma busca de referência em uma tabela com um índice clusterizado ou um índice columnstore clusterizado. Para um índice clusterizado, o painel Propriedades contém o nome do índice clusterizado e a chave de clustering usada para pesquisar a linha. Para um índice columnstore clusterizado, o ColStoreLoc é fornecido em vez da chave de clusterização. Key Lookup é sempre acompanhada por um operador Loops Aninhados. Se a cláusula WITH PREFETCH aparecer no painel Propriedades, o processador de consulta determinou que é ideal usar a busca prévia assíncrona (leitura antecipada) ao pesquisar indicadores no índice clusterizado.

Uma Pesquisa de Chave com um alto número de execuções em relação ao tamanho da tabela pode se beneficiar da adição de um índice de cobertura. Um número baixo de execuções normalmente não é uma preocupação de desempenho.
Keyset O operador Keyset usa um cursor que pode visualizar atualizações, mas não inserções, feitas por outros.

Keyset é um operador físico.
Elemento Linguagem O ícone genérico do Language Element é exibido quando um ícone adequado para o iterador não pode ser encontrado pela lógica que produz os planos de execução gráficos. O ícone genérico não indica necessariamente uma condição de erro.
Spool lento O operador lógico Lazy Spool armazena cada linha de sua entrada em um objeto temporário oculto armazenado no banco de dados tempdb . Se for feito o retrocesso do operador (por exemplo, por um operador Nested Loops ) sem que haja necessidade de reassociação, serão usados os dados em spool em vez de um novo exame da entrada. Se a reassociação for necessária, os dados em spool serão descartados e o objeto de spool será recriado por meio de rescanear a entrada (reassociação). O operador Lazy Spool cria seu arquivo de spool de maneira “lenta”, ou seja, sempre que o operador pai do spool solicita uma linha, o operador do spool obtém uma linha de seu operador de entrada e a armazena no spool, em vez de consumir todas as linhas de uma vez.

O Lazy Spool é um operador lógico.
Nenhum Junção Anti Semi à Esquerda O operador Left Anti Semi Join retorna cada linha da primeira entrada (superior) quando não há linha correspondente na segunda entrada (inferior). Se não existir nenhum predicado de junção no painel Propriedades, cada linha será uma linha correspondente.

Left Anti Semi Join é um operador lógico.
Nenhum Junção Externa à Esquerda O operador Left Outer Join retorna cada linha que satisfaz o predicado de junção da primeira entrada (superior) com a segunda entrada (inferior). Além disso, ele retorna todas as linhas da primeira entrada que não têm linhas correspondentes na segunda entrada. As linhas não correspondentes na segunda entrada são retornadas como valores nulos. Se não existir nenhum predicado de junção no painel Propriedades, cada linha será uma linha correspondente.

Left Outer Join é um operador lógico.
Nenhum Junção semi-esquerda O operador Left Semi Join retorna cada linha da primeira entrada (superior) quando há uma linha correspondente na segunda entrada (inferior). Se não existir nenhum predicado de junção no painel Propriedades, cada linha será uma linha correspondente.

Left Semi Join é um operador lógico.
Verificação de linha de log O operador Log Row Scan examina o log de transações.

Log Row Scan é um operador lógico e físico.
Intervalo de mesclagem O operador Merge Interval mescla vários intervalos (com sobreposição potencial) para produzir intervalos mínimo, não sobrepostos, usados para buscar entradas de índice. Normalmente, esse operador aparece antes de um ou mais operadores Compute Scalar sobre os operadores Constant Scan, que constroem os intervalos (representados como colunas de uma linha) que esse operador mescla.

Merge Interval é um operador lógico e físico.
Merge Join O operador Merge Join executa a junção interna, a junção externa esquerda, a semi-junção esquerda, a junção anti-junção esquerda, a junção externa direita, a semi-junção direita, a junção externa completa, a concatenação e as operações lógicas de união.

No painel Propriedades, o operador Merge Join conterá um predicado merge se a operação estiver executando uma junção de um para muitos, ou um predicado many-to-many merge se a operação estiver executando uma junção de muitos para muitos. O painel Propriedades também inclui uma lista separada por vírgulas de colunas usadas para executar a operação. O operador Merge Join requer duas entradas classificadas em suas respectivas colunas, possivelmente inserindo operações de classificação explícitas no plano de consulta. A junção de mesclagem será particularmente efetiva se a classificação explícita não for necessária, por exemplo, se houver um índice de árvore B adequado no banco de dados ou se a ordem de classificação puder ser explorada para diversas operações, como uma junção de mesclagem e um agrupamento com rollup.

Merge Join é um operador físico. Para obter mais informações, confira Noções básicas sobre junções de mesclagem.
Loops aninhados O operador Nested Loops executa as operações lógicas de junção interna, junção externa esquerda, junção semi esquerda e junção anti semi esquerda.

As junções de loop aninhadas executam a entrada interna (inferior) uma vez para cada linha da entrada externa (superior). Quando a propriedade Referências Externas está presente, a junção é dinâmica: os valores de coluna listados da linha externa são enviados para a entrada interna para que seus operadores retornem apenas linhas correspondentes. A propriedade Predicate não é usada nesse caso. Quando as Referências Externas estão ausentes , a junção é estática: a entrada interna retorna as mesmas linhas em cada execução e um Predicado no painel Propriedades determina quais combinações se qualificam como correspondências.

Quando o OPTIMIZED atributo é definido como True, o operador reordena a entrada externa para melhorar a localidade de E/S ao acessar a entrada interna. Às vezes, isso é chamado de Optimized Nested Loops join.

Nested Loops é um operador físico. Para obter mais informações, consulte Noções básicas sobre junções de loops aninhados.
Nenhum Inserção de índice online O operador Online Index Insert indica que uma operação de índice (criar, alterar ou descartar) é executada online. Ou seja, os dados da tabela subjacente permanecem disponíveis para usuários durante a operação de índice.

O Online Index Insert é um operador físico.
Nenhum Parallelism O operador Parallelism (ou Iterador de Troca) executa as operações lógicas de distribuição de fluxos, coleta de fluxos e repartição de fluxos. O painel Propriedades pode conter um predicado partition columns com uma lista separada por vírgulas das colunas que estão sendo particionadas. O painel Propriedades também pode conter um predicado order by, que lista as colunas para preservar a ordem de classificação durante o particionamento.

Observação: se uma consulta tiver sido compilada como uma consulta paralela, mas em tempo de execução for executada como uma consulta serial, a saída do plano de execução gerada por SET STATISTICS XML ou ao usar a opção Incluir Plano de Execução Real no SQL Server Management Studio não conterá o elemento RunTimeInformation para o operador Parallelism. Na saída SET STATISTICS PROFILE, as contagens reais de linhas e o número real de execuções exibem zeros para o operador Parallelism. Quando qualquer uma das condições ocorre, significa que o operador Parallelism foi usado apenas durante a compilação da consulta e não no plano de consulta no runtime. Às vezes, os planos de consulta paralela são executados em série, se houver uma alta carga simultânea no servidor.

Parallelism é um operador físico. Para obter mais informações sobre o operador Parallelism, confira The Parallelism Operator.
Verificação da Tabela de Parâmetros O operador Verificação de Tabela de Parâmetros lê o conjunto de linhas interno produzido durante uma instrução INSERT ... EXEC. Esse conjunto de linhas contém a saída do módulo executado, como um procedimento armazenado ou um lote sql dinâmico, quando esses resultados são inseridos em uma tabela, tabela temporária ou variável de tabela.

Parameter Table Scan é um operador lógico e físico.
Nenhum Agregação parcial A agregação parcial normalmente é usada em planos paralelos. Ele aplica uma função de agregação ao maior número possível de linhas de entrada para evitar a necessidade de escrita em disco (também conhecida como "spill"). Hash Match é o único operador físico (iterador) que implementa a agregação parcial.

Agregação parcial é um operador lógico.
Consulta de população O operador Population Query popula a tabela de trabalho de um cursor quando o cursor é aberto.

A consulta de população é um operador físico.
Put O operador Put insere dados em uma tabela externa (PolyBase). Ao contrário de outros operadores de inserção, Put não retorna nenhuma linha para seu operador pai. No SQL Server 2016 (13.x) até SQL Server 2019 (15.x), o operador Put tem como destino o Hadoop e é executado no modo de linha. No SQL Server 2022 (16.x) e versões posteriores, o operador Put tem como destino Armazenamento do Azure ou armazenamento compatível com S3 e é executado no modo de lote. Para obter mais informações, consulte CREATE EXTERNAL TABLE AS SELECT (CETAS).

Put é um operador físico.

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores.
Atualizar Consulta O operador Refresh Query busca dados atuais para linhas do buffer de busca.

Atualizar Consulta é um operador físico.
Exclusão remota O operador Remote Delete exclui as linhas de entrada a partir de um objeto remoto.

Remote Delete é um operador lógico e físico.
Verificação de índice remoto O operador Remote Index Scan verifica o índice remoto especificado no painel Propriedades.

Verificação de Índice Remoto é um operador lógico e físico.
Busca de Índice Remoto O operador de Busca de Índice Remoto usa a busca de um objeto de índice remoto para recuperar linhas. O painel Propriedades contém o nome do índice remoto que está sendo usado e o predicado seek.

O Remote Index Seek é um operador lógico e físico.
Inserção Remota O operador Remote Insert insere linhas de entrada em um objeto remoto.

ORemote Insert é um operador lógico e físico.
Consulta remota O operador Remote Query submete uma consulta a uma fonte remota. O texto da consulta enviada ao servidor remoto aparece no painel Propriedades.

Remote Query é um operador lógico e físico.
Verificação remota O operador Remote Scan examina um objeto remoto. O nome do objeto remoto aparece no painel Propriedades.

Remote Scan é um operador lógico e físico.
Atualização Remota O operador Remote Update atualiza a linha de entrada em um objeto remoto.

Remote Update é um operador lógico e físico.
Repartition Streams O operador Repartition Streams (ou iterador de troca) consome vários fluxos e produz vários fluxos de registros. O conteúdo e o formato do registro não sofrem alterações. Se o Otimizador de Consulta usar um filtro bitmap, o número de linhas no fluxo de saída será reduzido. Cada registro de um fluxo de entrada é colocado em um fluxo de saída. Se esse operador for preservador de ordem, todos os fluxos de entrada deverão ser ordenados e mesclados em vários fluxos de saída ordenados. Se a saída for particionada, o painel Propriedades conterá um predicado partition columns e as colunas de particionamento. Se a saída for ordenada, o painel Propriedades conterá um predicado order by e as colunas que estão sendo ordenadas. O operador é usado somente em planos de consulta paralelos.

Reparticionar Fluxos atua como um operador lógico.
Resultado O operador Result consiste nos dados retornados ao término de um plano de consulta. Este é, geralmente, o elemento raiz de um plano de execução.

Result é um elemento de linguagem.
Pesquisa RID RID Lookup é uma busca por favoritos em um heap usando um identificador de linha (RID) fornecido. O painel Propriedades contém a etiqueta de marcador usada para localizar a linha na tabela e o nome da tabela na qual a linha é localizada. A pesquisa RID é sempre acompanhada por um operador loops aninhados .

RID Lookup é um operador físico. Para obter mais informações sobre consultas de indicador, consulte Read Committed and Bookmark Lookup.
Nenhum Semi-Junção Anti Lado Direito O operador Right Anti Semi Join gera cada linha da segunda entrada (inferior) quando não há uma linha correspondente na primeira entrada (superior). Uma linha correspondente é definida como uma linha que satisfaz o predicado no painel Propriedades (se não existir nenhum predicado, cada linha será uma linha correspondente).

Right Anti Semi Join é um operador lógico.
Nenhum Junção Externa à Direita O operador Right Outer Join retorna cada linha que satisfaz a junção da segunda entrada (entrada inferior) com cada linha correspondente da primeira entrada (entrada superior). Além disso, ele retorna todas as linhas da segunda entrada que não tenham linhas correspondentes na primeira entrada, unidas por NULL. Se não existir nenhum predicado de junção no painel Propriedades, cada linha será uma linha correspondente.

Right Outer Join é um operador lógico.
Nenhum Semi-junção à direita O operador Right Semi Join retorna cada linha da segunda entrada (inferior) quando há uma linha correspondente na primeira entrada (superior). Se não existir nenhum predicado de junção no painel Propriedades, cada linha será uma linha correspondente.

Right Semi Join é um operador lógico.
Spool de Contagem de Linhas O operador Row Count Spool examina a entrada, contando quantas linhas estão presentes e retornando o mesmo número de linhas sem qualquer dado nelas. Esse operador é usado quando é importante verificar a existência de linhas, em vez dos dados contidos nas linhas. Por exemplo, se um operador Nested Loops executar uma operação de semijunção esquerda e o predicado de junção se aplicar à entrada interna, um spool de contagem de linhas poderá ser colocado na parte superior da entrada interna do operador Nested Loops. Em seguida, o operador Nested Loops pode determinar quantas linhas são geradas pelo spool de contagem de linhas (porque os dados reais do lado interno não são necessários) para determinar se a linha externa deve ser retornada.

ORow Count Spool é um operador físico.
Nenhum Repartição de segmento Às vezes, em um plano de consulta paralelo, há regiões conceituais de iteradores. Todos os iteradores dentro dessa região podem ser executados em threads paralelos. As regiões em si devem ser executadas em série. Alguns dos iteradores Parallelism em uma região individual são chamados Branch Repartition. O iterador Parallelism no limite dessas duas regiões é chamado Segment Repartition.

Branch Repartition e Segment Repartition são operadores lógicos.
Segmento O operador Segment divide o conjunto de entrada em segmentos com base no valor de uma ou mais colunas. Essas colunas são mostradas como argumentos no operador Segment . A entrada é classificada por essas colunas. O operador usa a coluna de segmento para marcar a primeira linha de cada segmento.

O Segment é um operador lógico e físico.
Projeto de sequência O operador Sequence Project adiciona colunas para executar computações sobre um conjunto ordenado. Ele requer a divisão do conjunto de entrada em segmentos com base no valor de uma ou mais colunas.

Sequence Project é um operador lógico e físico.
Sequência O operador Sequence executa cada entrada em sequência (de cima para baixo) e retorna apenas as linhas provenientes de sua última entrada (inferior). Os usos comuns incluem planos de atualização ampla (em que cada entrada normalmente é uma atualização de um objeto diferente), consultas que usam funções que retornam tabelas com múltiplas instruções e consultas que usam SHORTEST_PATH em uma tabela de grafo.

Sequence é um operador lógico e físico.
Instantâneo O operador Snapshot cria um cursor que não visualiza as alterações feitas por outros.

Snapshot é um operador físico.
Sort O operador Sort classifica todas as linhas de entrada. O painel Propriedades conterá um predicado distinct order by se as duplicatas forem removidas por essa operação ou um predicado order by com uma lista separada por vírgulas das colunas que estão sendo classificadas. As colunas serão prefixadas com o valor ASC se as colunas forem classificadas em ordem ascendente ou com o valor DESC se as colunas forem classificadas em ordem descendente.

Sort é um operador lógico e físico.
Dividir O operador Split é usado para otimizar o processamento da atualização. Ele divide cada operação de atualização em uma operação de exclusão e inserção.

Split é um operador lógico e físico.
Spool O operador Spool salva um resultado de consulta intermediário no banco de dados tempdb .
Agregação de fluxo O operador Stream Aggregate agrupa linhas por uma ou mais colunas e, em seguida, calcula uma ou mais expressões de agregação retornadas pela consulta. O operador Stream Aggregate requer a entrada de dados ordenada pelas colunas dentro de seus grupos. O otimizador usará um operador Sort antes desse operador se os dados ainda não estiverem classificados devido a um operador Sort anterior ou devido a uma busca ou a um processo de verificação de índice ordenado. Na instrução SHOWPLAN_ALL ou no plano de execução gráfico no SQL Server Management Studio, as colunas do predicado group by são listadas no painel Propriedades e as expressões de agregação são listadas na coluna Valores Definidos.

Stream Aggregate é um operador físico.
Switch Switch é um tipo especial de iterador de concatenação que tem n entradas. Uma expressão é associada a cada operador Switch . Dependendo do valor retornado da expressão (entre 0 e n-1), o Switch executa a entrada apropriada e retorna suas linhas. Comutador é usado para implementar planos de consulta de INSERT INTO instruções em relação a exibições particionadas. Também é usado para implementar planos de consulta que envolvem cursores de avanço rápido com determinados operadores, como o operador TOP.

O Switch é um operador lógico e físico.
Excluir Tabela O operador Table Delete exclui linhas da tabela especificada no painel Propriedades do plano de execução da consulta.

O Table Delete é um operador físico.
Inserção de Tabela O operador Table Insert insere as linhas da entrada na tabela especificada no painel Propriedades do plano de execução da consulta. O painel Propriedades também contém um predicado set, que indica o valor para o qual cada coluna está definida. Se Table Insert não tiver nenhum filho para inserir valores, então a linha inserida será obtida do próprio operador de inserção.

Table Insert é um operador físico.
Mesclagem de Tabela O operador Table Merge aplica um fluxo de dados de mesclagem em um heap. O operador exclui, atualiza ou insere as linhas na tabela especificada no painel Propriedades do operador. A operação real executada depende do valor de runtime da propriedade ActionColumn.

Table Merge é um operador físico.
Verificação de Tabela O operador Table Scan recupera todas as linhas da tabela especificada no painel Propriedades do plano de execução da consulta. Se um predicado where aparecer no painel Propriedades, somente as linhas que satisfazem o predicado serão retornadas.

Table Scan é um operador lógico e físico.
Spool de Tabela O operador Table Spool examina a entrada e coloca uma cópia de cada linha em uma tabela de spool oculta que é armazenada no banco de dados tempdb e existe durante o tempo de vida da consulta. Se for feito o retrocesso do operador (por exemplo, por um operador Nested Loops ) sem que haja necessidade de reassociação, serão usados os dados em spool em vez de um novo exame da entrada.

Table Spool é um operador físico.
Atualização de Tabela O operador Table Update realiza atualizações das linhas de entrada na tabela especificada no painel Propriedades do plano de execução da consulta. O predicado set determina o valor de cada coluna atualizada. Esses valores podem ser referenciados na cláusula SET ou em outro local desse operador e em outro local dessa consulta.

O Table Update é um operador físico.
Função com valor de tabela O operador Table-valued Function avalia uma função com valor de tabela (Transact-SQL ou CLR) e armazena as linhas resultantes no banco de dados tempdb. Quando os iteradores pais solicitam as linhas, o operador Table-valued Function retorna as linhas de tempdb.

As consultas com chamadas às funções com valor de tabela geram planos de consulta com o iterador Table-valued Function. Table-valued Function pode ser avaliada com valores de parâmetros diferentes:

O- Leitor de XML da Função com valor de tabela recebe um BLOB XML como parâmetro e produz um conjunto de linhas representando os nós XML na ordem do documento XML. Outros parâmetros de entrada podem restringir nós XML retornados a um subconjunto de documentos XML.

- Função de valor de tabela de Leitor de XML com filtro XPath é um tipo especial de Função de valor de tabela para Leitor de XML que restringe a saída a nós XML que satisfazem uma expressão XPath.

Table-valued Function é um operador lógico e físico.
Top O operador Top verifica a entrada, retornando só o primeiro número ou porcentagem de linhas especificado, possivelmente com base em uma ordem de classificação. O painel Propriedades pode conter uma lista das colunas que estão sendo verificadas quanto a empates. Em planos de atualização, o operador Top é usado para aplicar os limites de contagem de linhas.

Top é um operador lógico e físico.
Nenhum Classificação Top N Top N Sort é semelhante ao iterador Sort, exceto que apenas as primeiras N linhas são necessárias e não todo o conjunto de resultados. Para valores pequenos de N, o mecanismo de execução de consultas do SQL Server tenta executar toda a operação de classificação na memória. Para valores altos de N, o mecanismo de execução de consultas recorre ao método mais genérico de classificação para o qual N não é um parâmetro.
UDX Operadores estendidos (UDX) implementam uma de muitas operações XQuery e XPath no SQL Server.

– O operador estendido (UDX) FOR XML é usado para serializar o conjunto de linhas relacionais que ele inseriu na representação XML em uma única coluna BLOB em uma única linha de saída. É um operador de agregação XML sensível à ordenação.

– O UDX (operador estendido) XML SERIALIZER é um operador de agregação XML sensível à ordem. Ele insere linhas que representam nós XML ou escalares de XQuery em ordem de documento XML e produz um XML BLOB serializado em uma única coluna XML em uma única linha de saída.

– O (UDX) operador estendido XML FRAGMENT SERIALIZER é um tipo especial de XML SERIALIZER que é usado para processar linhas de entrada que representam fragmentos XML sendo inseridos na extensão de modificação de dados do XQuery.

– O operador estendido (UDX) XQUERY STRING avalia o valor da cadeia de caracteres XQuery de linhas de entrada que representam nós XML. É um operador de agregação de sequência sensível à ordenação. Produz uma linha com colunas que representam o escalar de XQuery que contém o valor de string da entrada.

– O operador estendido (UDX) XQUERY LIST DECOMPOSER é um operador de decomposição de lista XQuery. Para cada linha de entrada que representa um nó XML, ele produz uma ou mais linhas, cada uma representando escalares do XQuery que contêm um valor de elemento da lista, se a entrada for do tipo de lista XSD.

– O operador estendido (UDX) XQUERY DATA avalia a função XQuery fn:data() na entrada que representa nós XML. É um operador de agregação de sequência sensível à ordenação. Ele gera uma linha com colunas que representam o escalar do XQuery que contém o resultado de fn:data().

– O operador XQUERY CONTAINS estendido avalia a função XQuery fn:contains() na entrada que representa nós XML. É um operador de agregação de sequência sensível à ordenação. Ele gera uma linha com colunas que representam o escalar do XQuery que contém o resultado de fn:contains().

– O operador UPDATE XML NODE estendido atualiza o nó XML na extensão de modificação de dados de substituição no método modify() do tipo XML.

Os operadores UDX são operadores lógicos e físicos.
Union O operador Union verifica várias entradas, gerando a saída de cada linha examinada e removendo duplicatas.

Union é um operador lógico.
Atualizar O operador Update realiza atualizações de cada linha da entrada no objeto especificado no painel Propriedades do plano de execução da consulta.

Update é um operador lógico. O operador físico é Atualização de Tabela, Atualização de Índice, Atualização de Índice Clusterizado ou Atualização de Índice Columnstore.
Nenhum Agregação de janela O operador Janela de Agregação avalia uma ou mais expressões de agregação com uma definição de janela e adiciona seus resultados ao fluxo de dados.

A Agregação de Janela é um operador lógico e físico.
Spool de janela O operador Window Spool expande cada linha no conjunto de linhas que representa a janela associada a ele. Em uma consulta, a cláusula OVER define a janela em um conjunto de resultados de consulta e uma função de janela e, em seguida, calcula um valor para cada linha na janela. O operador armazena todas as linhas de entrada em uma tabela de trabalho oculta no banco de dados tempdb ou na memória.

Window Spool é um operador lógico e físico.

Observação

A documentação usa o termo árvore B geralmente em referência a índices. Em índices de rowstore, o Mecanismo de Banco de Dados implementa uma árvore B+. Isso não se aplica a índices columnstore ou índices em tabelas com otimização de memória. Para obter mais informações, confira o Guia de arquitetura e design do índice do SQL Server e SQL do Azure.