Referência lógica e física do operador do showplan

Aplica-se a:SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceBase 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 Consultas utiliza operadores para construir um plano de consulta que crie o resultado ou execute 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 orienta a execução global. Para uma SELECT instrução, a raiz normalmente devolve um conjunto de resultados ao cliente. Para instruções de modificação de dados (INSERT, UPDATE, DELETE, MERGE) ou instruções como SELECT...INTO, a raiz dirige a modificação e poderá não devolver linhas. Operadores sem entradas, no extremo direito da árvore, são nós folha que normalmente leem dados a partir do armazenamento. Operadores intermédios transformam, filtram ou juntam os dados à medida que fluem da direita para a esquerda através do plano.

Você pode exibir o plano de consulta usando as SET SHOWPLAN instruções, as opções do plano de execução gráfico no SQL Server Management Studio ou os eventos do plano de exibição de Eventos Estendidos.

Tipos de operadores

Os operadores são classificados como operadores 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, os 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 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 têm custos associados a eles.

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

  • Open(): O Open() método faz com que um operador físico inicialize a si mesmo e configure todas as estruturas de dados necessárias. Embora o operador físico possa receber muitas Open() chamadas, geralmente recebe apenas uma.

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

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

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

Elementos linguísticos

Alguns operadores num plano de consulta representam elementos Transact-SQL linguagem em vez de operações relacionais. Estes incluem construtos como atribuição de variáveis, conversão de tipos e fluxo de controlo (IF/WHILE). Os elementos de linguagem não são classificados como operadores lógicos ou físicos.

Rebinds, reinicializações e conclusões de varredura

Os seguintes contadores aparecem na saída do plano de execução e ajudam a compreender com que frequência um operador é executado novamente.

As contagens ActualRebinds e ActualRewinds que aparecem na saída do showplan referem-se ao número de vezes que o Open() método é chamado. A menos que um operador esteja no lado interno de uma união de loops aninhados, ActualRebinds é igual a um e ActualRewinds é igual a zero. Se um operador estiver no lado interno de uma junção de loop, o número total de rebinds e rewinds deve ser igual ao número de linhas processadas no lado externo da junção. Uma religação significa que um ou mais dos parâmetros correlacionados da junção foram alterados e o lado interno deve ser reavaliado. Um retrocesso 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 no output do showplan XML gerado utilizando SET STATISTICS XML ON e o showplan gráfico. 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 está definido para TRUE.

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

Um contador relacionado, ActualEndOfScans, está disponível no plano de apresentação XML e gráfico. Sempre que um operador físico atinge o final de seu fluxo de dados, esse contador aumenta em um. Um operador físico pode chegar ao final de seu fluxo de dados zero, uma ou várias vezes. Tal como acontece com rebinds e rewinds, o final da contagem de scans pode ser mais de um, apenas se o operador estiver no lado interno de uma junção em loop. A contagem final de scans deve ser menor ou igual à soma do número de rebinds e rewinds.

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

O Otimizador de Consulta cria um plano de consulta como uma árvore que consiste em operadores lógicos. Depois de o Otimizador de Consultas criar o plano, escolhe um operador físico para cada operador lógico. O Otimizador de Consultas utiliza uma abordagem baseada em custos para determinar qual operador físico implementa um operador lógico.

Normalmente, uma operação lógica pode ser implementada por vários operadores físicos. No entanto, em casos raros, um operador físico também pode implementar várias operações lógicas.

Execução em modo de lote

A execução em modo de lote é um método de processamento de consulta usado para processar várias linhas juntas (daí o termo lote) em vez de uma linha de cada vez. O processamento em modo batch usa algoritmos otimizados para CPUs multi-core e maior taxa de transferência de memória em hardware moderno. O modo de lote pode ser usado por um conjunto de operadores para objetos rowstore e columnstore. Para obter mais informações, consulte Guia de arquitetura de processamento de consultas.

Como ler um plano de execução

No plano gráfico de execução, as setas apontam da direita para a esquerda, representando o fluxo de dados. Em tempo de execução, isto funciona no sentido oposto: os operadores são baseados em pull e só realizam trabalho quando solicitados a obter dados.

O operador raiz chama GetRow() o seu filho, que chama os seus próprios filhos, até que um nó folha leia uma linha do armazenamento e a devolve para cima na cadeia. Uma Varredura de Índice Clusterizada sob um operador Top, por exemplo, não escaneia toda a tabela. A varredura para assim que Top tiver linhas suficientes. No modo batch, cada chamada devolve 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. Pode visualizar as propriedades dos planos de consulta e operadores usando o painel de Propriedades na vista Query Plan do SQL Server Management Studio (SSMS).

Sugestão

Sempre que um dado ícone gráfico de plano de execução tem um círculo amarelo com duas setas da direita para a esquerda, significa que o operador correu em paralelo. Para obter mais informações sobre paralelismo, consulte o Guia de Arquitetura de Encadeamento e Tarefa.

Ícone Operador de Showplan Description
Junção adaptativa O operador Adaptive Join permite que a escolha de um método de junção de hash ou junção de loops aninhados seja adiada até que a primeira entrada tenha sido analisada.

O Adaptive Join é um operador físico. Para obter mais informações, consulte Noções básicas sobre associações adaptáveis.
Agregado O operador agregado calcula expressões que contêm uma ou mais funções agregadas.

Agregado é um operador lógico. Pode ser implementado pelo operador Stream Aggregate, Hash Match, Window Aggregate ou UserDefinedAggregate (CLR).
Expressão Aritmética O operador Expressão Aritmética calcula um novo valor a partir de valores existentes em uma linha. A Expressão Aritmética não é usada em versões mais recentes do SQL Server.
Afirmar 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 não nulo, o erro apropriado será gerado.

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

Atribuir é um elemento de linguagem.
Nenhum Concat assíncrono O operador Async Concat é usado apenas em consultas remotas (consultas distribuídas). Tem n filhos e um nó pai. Normalmente, algumas das crianças são computadores remotos que participam de uma consulta distribuída. O Async Concat emite Open() chamadas para todas as crianças simultaneamente e, em seguida, aplica um bitmap a cada criança. Para cada bit que é um 1, Async Concat envia as linhas de saída para o nó pai a pedido.

O Concat Assíncrono é um operador físico.
Construção da Tabela de Hash em Batch O operador Batch Hash Table Build constrói uma tabela de hash batch para um índice de coluna otimizado para memória.

Aplica-se: SQL Server 2012 (11.x) apenas.
Bitmap O SQL Server usa o operador Bitmap para implementar filtragem de bitmap em planos de consulta paralela. A filtragem bitmap acelera o processamento de consultas ao eliminar linhas com valores-chave que não podem produzir registos de junção antes de passar as 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 do operador para filtrar linhas de uma segunda tabela em outra parte da árvore. Ao remover linhas desnecessárias no início da consulta, os operadores subsequentes têm menos linhas para trabalhar e o desempenho geral da consulta melhora. O otimizador determina quando um bitmap é suficientemente seletivo para ser útil e em quais operadores o filtro deve ser aplicado.

Bitmap é um operador físico.
Criação de bitmap O operador Bitmap Create aparece na saída do showplan onde os bitmaps são criados.

Bitmap Create é um operador lógico.
Nenhum Redistribuição de Ramo Em um plano de consulta paralelo, às vezes há regiões conceituais de iteradores. Todos os iteradores dentro dessa região podem executar em threads paralelos. As próprias regiões têm de funcionar em série. Alguns dos iteradores de Paralelismo dentro de uma região individual são designados por Branch Repartition. O iterador de paralelismo no limite de duas dessas regiões é chamado de partição de segmento.

Branch Repartition e Segment Repartition são operadores lógicos.
Transmissão A transmissão tem um nó filho e n nós pais. O Broadcast envia as suas linhas de entrada para vários consumidores quando solicitado. Cada consumidor recebe todas as linhas. Por exemplo, se todos os consumidores forem lados de construção de uma junção de hash, então n cópias das tabelas de hash serão construídas.

A radiodifusão é um operador lógico.
Exclusão de índice agrupado O operador Clustered Index Delete exclui linhas do índice clusterizado especificado na propriedade Object , listada no painel Properties dos showplans gráficos e XML. Se um SeekPredicate ou Predicado estiver presente, somente as linhas que satisfazem o predicado serão excluídas.

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

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

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

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

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

Clustered Index Merge é um operador físico.
Verificação de índice agrupado O operador Clustered Index Scan verifica o índice clusterizado especificado na propriedade Object , listada no painel Properties dos showplans gráficos e XML. Quando um Predicado opcional está presente, somente as linhas que satisfazem o predicado são retornadas. Se a propriedade Ordered no painel Propriedades ou no plano de exibição XML estiver como verdadeira, o processador de consultas determinou que as linhas devem ser retornadas na ordem em que o índice agregado as classificou. Se a propriedade Ordered for False, o motor de base de dados varre o índice sem garantir a ordem da saída. A propriedade SeekPredicate está disponível apenas para um índice clusterizado particionado.

O Clustered Index Scan é um operador lógico e físico.
Busca de índice agrupado O operador Clustered Index Seek usa a capacidade de busca de índices para recuperar linhas de um índice clusterizado. A propriedade Object , listada no painel Properties dos showplans gráficos e XML, contém o nome do índice clusterizado que está sendo usado. O SeekPredicate contém o predicado para a busca. O Mecanismo de Banco de Dados usa o índice para processar somente as linhas que satisfazem o SeekPredicate. Ele também pode incluir uma propriedade Predicado em que o Mecanismo de Banco de Dados avalia em relação a todas as linhas que satisfazem o SeekPredicate, mas isso é opcional e não usa índices para concluir esse processo. A propriedade Ordenada é normalmente verdadeira para este operador.

Clustered Index Seek é um operador lógico e físico.
Atualização de índice clusterizado O operador Clustered Index Update atualiza linhas de entrada no índice clusterizado especificado da propriedade Object, listada no painel Properties dos showplans gráficos e XML. Se a propriedade Predicado 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 que esse operador define serão listados. Esses valores podem ser referenciados SET na cláusula ou em outro lugar dentro deste operador e em outro lugar dentro desta consulta.

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

A Atualização de Índice Clusterizado é um operador lógico e físico.
Fechar O operador Collapse otimiza o processamento de atualização. Quando uma atualização é executada, ela pode ser dividida (usando o operador Split ) em uma exclusão e uma inserção. O painel Propriedades contém um grupo por predicado que especifica uma lista de colunas de chave. Se o processador de consultas encontrar linhas adjacentes que excluem e inserem os mesmos valores de chave, ele substituirá essas operações separadas por uma única operação de atualização mais eficiente.

Collapse é um operador lógico e físico.
Columnstore Index Excluir O operador Columnstore Index Delete representa a exclusão de linhas do índice columnstore especificado na propriedade Object , listada no painel Properties dos showplans gráficos 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 showplan XML. O SeekPredicate não é suportado para a eliminação de Índice Columnstore. As linhas a serem eliminadas são lidas por um operador subordinado.

Columnstore Index Delete é um operador físico.
Columnstore Index Inserir O operador Columnstore Index Insert representa a inserção de linhas de sua entrada no índice columnstore especificado na propriedade Object , listada no painel Properties dos showplans gráficos e XML. A inserção ocorre por meio da inserção de índice clusterizado 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 showplan XML. O plano de execução XML inclui as propriedades SetPredicate e ColumnReference , que podem ser usadas para determinar o valor para o qual cada coluna está definida.

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 apaga, atualiza ou insere linhas do índice columnstore clusterizado especificado na propriedade Object, listada no painel Propriedades dos planos de execução gráficos e XML. O tipo de índice (Clustered, NonClustered, ViewClustered ou ViewNonClustered) é especificado na propriedade IndexKind no showplan XML. A operação real executada depende do valor de tempo de execução da propriedade ActionColumn .

Columnstore Index Merge é um operador físico.
Análise de Índice em Columnstore O operador Columnstore Index Scan representa uma verificação do índice columnstore especificado na propriedade Object , listada no painel Properties dos showplans gráficos e XML. A verificação ocorre por meio da Verificação de índice clusterizado 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 showplan XML. Quando um Predicado opcional está presente, somente as linhas que satisfazem o predicado são retornadas. A propriedade SeekPredicate só está disponível para um índice columnstore particionado e apenas para condições de igualdade ou desigualdade. Se a coluna particionada estiver em predicado de consulta, a eliminação de partições e a eliminação de grupos de linhas podem ambas reduzir o número de grupos de linhas a varrer.

Columnstore Index Scan é um operador físico.
Atualização do índice Columnstore O operador Atualização do Índice Columnstore representa uma atualização de uma ou mais linhas no índice columnstore especificado na propriedade Object, listado no painel Properties dos planos demonstrativos gráficos e XML. As atualizações ocorrem por meio do operador Atualização de Índice Clusterizado para um índice columnstore clusterizado e por meio do operador Atualização de Índice para um índice columnstore não clusterizado. O tipo de índice (Clustered, NonClustered, ViewClustered ou ViewNonClustered) é especificado na propriedade IndexKind no showplan XML. O SeekPredicate não é suportado para uma atualização de índice Columnstore. As linhas a serem atualizadas são lidas de um operador subordinado. Se a propriedade SetPredicate estiver presente, cada coluna atualizada será definida com esse valor. Se a propriedade DefineValue estiver presente, os valores que esse operador define serão listados. Esses valores podem ser referenciados SET na cláusula ou em outro lugar dentro deste operador e em outro lugar dentro desta consulta.

Columnstore Index Update é um operador físico.
Cálculo Escalar O operador Compute Scalar avalia uma expressão para produzir um valor escalar computado. Isso pode ser retornado ao usuário, referenciado em outro lugar na consulta ou ambos. Um exemplo de ambos está em um predicado de filtro ou predicado de junção.

Os operadores Compute Scalar que aparecem em showplans gerados por SET STATISTICS XML podem não conter o elemento RunTimeInformation . Em planos de exibição gráficos, Linhas Reais, Religações Reais e Rebobinagens Reais podem estar ausentes da janela Propriedades quando a opção Incluir Plano de Execução Real é selecionada no SQL Server Management Studio. Quando isso ocorre, significa que, embora esses operadores tenham sido usados no plano de consulta compilado, seu trabalho foi executado por outros operadores no plano de consulta de tempo de execução. O número de execuções na saída do showplan gerada por SET STATISTICS PROFILE é equivalente à soma de rebinds e rewinds nos showplans gerados por SET STATISTICS XML.

Compute Scalar é um operador lógico e físico.
Concatenação O operador de concatenação verifica várias entradas, retornando cada linha digitalizada. A concatenação é normalmente usada para implementar a construção Transact-SQL UNION ALL . O operador físico de concatenação tem duas ou mais entradas e uma saída. A concatenação copia linhas do primeiro fluxo de entrada para o fluxo de saída e, em seguida, repete essa operação para cada fluxo de entrada adicional.

A concatenação é um operador lógico e físico.
Condicional (Se e Enquanto) O operador Conditional realiza processamento condicional com base em um IF ou WHILE loop. Se e Enquanto são elementos de linguagem.
Varredura 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 adicionar colunas a uma linha produzida pelo operador Constant Scan . A verificação constante pode gerar uma ou mais linhas com zero ou mais colunas.

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

Converter é um elemento de linguagem.
Junção cruzada O operador Cross Join une cada linha da primeira entrada (superior) com cada linha da segunda entrada (inferior).

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

Os operadores lógicos incluem Assíncrono, Otimista, Primário, Somente leitura, Bloqueios de rolagem, Secundário e Síncrono.

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

Declare é um elemento linguístico.
Eliminar O operador Delete exclui linhas (de um objeto) que satisfazem o predicado opcional no painel Propriedades .

Delete é um operador lógico.
Verificação excluída Nos gatilhos, o operador Verificação Excluída verifica a tabela excluída .

O Deleted Scan é 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, removendo duplicados e ordenando pelas colunas especificadas no predicado distinct order by do painel Propriedades.

Distinct Sort é um operador lógico.
Distribuir fluxos O operador Distribute Streams é usado somente em planos de consulta paralelos. O operador Distribute Streams obtém um único fluxo de entrada de registros e produz vários fluxos de saída. O conteúdo e o formato do registo não são alterados. Cada registo do fluxo de entrada aparece num dos fluxos de saída, a menos que o tipo de partição seja Broadcast, caso em que cada linha de entrada aparece em todos os fluxos de saída. Este operador preserva automaticamente a ordem relativa dos registos de entrada nos fluxos de saída. Normalmente, o hashing é usado 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 de colunas de partição e as colunas de particionamento.

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

Dinâmico é um operador físico.
Empanejamento Antecipado O operador Eager Spool recebe 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), mas nenhuma religação for necessária, os dados em memória serão usados em vez de reescanear a entrada. Se a religação for necessária, os dados enfileirados serão descartados e o objeto de spool será reconstruído reexaminando a entrada reencaminhada. O operador Eager Spool constrói seu arquivo de spool de uma maneira "ansiosa": quando 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.

Eager Spool é um operador lógico.
Consulta de busca O operador Fetch Query recupera linhas quando uma busca é emitida contra um cursor.

Fetch Query é um operador físico.
Filtro O operador Filter verifica a entrada, retornando apenas 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, removendo duplicatas. Enquanto o operador Distinct consome toda a entrada antes de produzir qualquer saída, o operador Flow Distinct retorna cada linha à medida que é obtida da entrada (a menos que essa linha seja uma duplicata, caso em que é descartada).

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

Foreign Key References Check é um operador lógico e físico.
Junção Exterior Completa O operador lógico Full Outer Join devolve cada linha da primeira entrada (superior) que satisfaz o predicado de junção, unida com cada linha da segunda entrada (inferior). Ele também retorna linhas de:

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

- A segunda entrada que não teve correspondências 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.
Reunir 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 combinando os fluxos de entrada. O conteúdo e o formato do registo não são alterados. Se este operador estiver a preservar a ordem, todos os fluxos de entrada devem ser ordenados. Se a saída for ordenada, o painel Propriedades conterá uma ordem por predicado 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 calculando um valor de hash para cada linha a partir de sua entrada de compilação. Um predicado de hash , com uma lista de colunas usadas para criar um valor de hash, aparece no painel Propriedades . Em seguida, para cada linha de teste (conforme aplicável), ele calcula um valor de hash (usando a mesma função de hash) e procura correspondências na tabela de hash. Se estiver presente um predicado residual (mostrado como Residual de Construção ou Residual de Verificação no painel de Propriedades), esse predicado também deve ser satisfeito para que as linhas sejam consideradas uma correspondência. O comportamento depende da operação lógica que está sendo executada:

- Para quaisquer junções, use a primeira entrada (superior) para construir a tabela de hash e a segunda entrada (inferior) para sondar a tabela de hash. A saída coincide (ou não coincide) conforme determinado pelo tipo de junção. Se várias associações usarem a mesma coluna de associação, essas operações serão agrupadas em um grupo de hash.

- Para os operadores distintos ou agregados, use a entrada para construir a tabela de hash (removendo duplicatas e computando quaisquer expressões agregadas). Quando a tabela de hash é criada, analise a tabela e produza todas as entradas.

- Para o operador de união, use a primeira entrada para construir a tabela de hash (eliminando duplicados). Use a segunda entrada (que não deve ter duplicatas) para sondar a tabela de hash, retornando todas as linhas que não têm correspondências, depois verifique a tabela de hash e retorne todas as entradas.

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

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

Index Insert é um operador físico.
Verificação de índice O operador Verificação de Índice recupera todas as linhas do índice não clusterizado especificado no painel Propriedades . Se um predicado opcional onde aparecer no painel Propriedades, somente as linhas que satisfazem o predicado serão retornadas. Se a propriedade Ordenada for Verdadeira, as linhas são devolvidas na ordem em que o índice não agrupado as classificou. Se a propriedade Ordered for False, o motor de base de dados varre o índice sem garantir a ordem da saída.

O 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. 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 de busca . Opcionalmente, pode incluir um predicado where , que o Mecanismo de Banco de Dados avalia em relação a todas as linhas que satisfazem o predicado de busca (ele não usa os índices para fazer isso).

Index Seek é um operador lógico e físico.
Spool de índice O operador Spool de índice contém um predicado de busca no painel Propriedades . O operador Index Spool analisa as suas linhas de entrada, colocando uma cópia de cada linha num ficheiro spool oculto (armazenado na base de dados tempdb e existente apenas durante a vida útil da consulta), e constrói um índice sobre as linhas. Isso permite que você use a capacidade de busca de índices para produzir apenas as linhas que satisfazem o predicado de busca .

Index Spool é um operador físico.
Atualização do índice O operador físico Atualização de Índice atualiza linhas a partir de sua entrada no índice não clusterizado especificado no painel Propriedades . Se um predicado definido estiver presente, cada coluna atualizada será definida com esse valor.

Atualização de Índice é um operador físico.
Junte-se Internamente O operador Inner Join retorna cada linha que satisfaz o predicado de junção da primeira entrada (superior) com a segunda entrada (inferior).

Inner Join é um operador lógico.
Inserir O operador Insert insere cada linha de sua entrada no objeto especificado no painel Propriedades . O operador físico é o operador Inserção de tabela, Inserção de índice ou Inserção de índice clusterizado .

Insert é um operador lógico.
Scan Inserido Nos gatilhos, o operador de varredura inserida verifica a tabela inserida .

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

Intrínseco é um elemento da linguagem.
Iterador O ícone do iterador catchall é exibido quando a lógica que produz planos de execução gráficos não consegue encontrar um ícone adequado para o iterador. O ícone catchall não indica necessariamente uma condição de erro.
Procura de chave O operador Key Lookup é uma consulta de favoritos numa tabela com um índice agrupado ou um índice clustered columnstore. Para um índice agrupado, o painel de Propriedades contém o nome do índice agrupado e a chave de agrupamento usada para consultar a linha. Para um índice clustered columnstore, é fornecido o ColStoreLoc em vez da chave de clustering. Key Lookup é sempre acompanhado por um operador Nested Loops. Se a WITH PREFETCH cláusula aparecer no painel Propriedades , o processador de consultas determinou que é ideal usar a pré-busca assíncrona (read-ahead) ao procurar marcadores no índice clusterizado.

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

Keyset é um operador físico.
Elemento de linguagem O ícone genérico Language Element é exibido quando um ícone adequado para o iterador não pode ser encontrado pela lógica que gera planos de execução gráfica. O ícone catchall não indica necessariamente uma condição de erro.
Lazy Spool 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 o operador for rebobinado (por exemplo, por um operador Nested Loops), mas nenhuma religação for necessária, os dados em spool serão usados em vez de voltar a ler a entrada. Se a religação for necessária, os dados spooled serão descartados e o objeto spool será reconstruído examinando novamente a entrada (rebound). O operador Lazy Spool constrói seu arquivo de spool de uma maneira "preguiçosa", ou seja, cada vez que o operador pai do spool pede uma linha, o operador de spool obtém uma linha de seu operador de entrada e a armazena no spool, em vez de consumir todas as linhas de uma só vez.

Lazy Spool é um operador lógico.
Nenhum Esquerda Anti Semi Junte-se O operador Left Anti Semi Join retorna cada linha da primeira entrada (superior) quando não há nenhuma 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). Ele também retorna quaisquer linhas da primeira entrada que não tenham 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 Semi Adesão 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.
Varredura de linha de log O operador Log Row Scan verifica o log de transações.

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

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

No painel Propriedades, o operador Merge Join contém um predicado de merge se a operação estiver a executar uma junção um-para-muitos, ou um predicado de merge muitos-para-muitos se a operação estiver a executar uma junção 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 respetivas colunas, possivelmente inserindo operações de classificação explícitas no plano de consulta. A junção de mesclagem é particularmente eficaz 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 várias operações, como uma junção de mesclagem e agrupamento com rollup.

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

As junções de ciclo aninhado executam a entrada interior (inferior) uma vez por cada linha da entrada exterior (superior). Quando a propriedade Outer References está presente, a junção é dinâmica: os valores listados da coluna da linha exterior são empurrados para a entrada interna de modo que os seus operadores retornam apenas as linhas correspondentes. A propriedade de Predicado não é usada neste caso. Quando as Referências Exteriores estão ausentes, a junção é estática: a entrada interna devolve as mesmas linhas em cada execução, e um Predicado no painel de Propriedades determina quais as combinações que se qualificam como correspondências.

Quando o OPTIMIZED atributo é definido para True, o operador reordena a entrada externa para melhorar a localidade de E/S ao aceder à entrada interna. Às vezes, isto é chamado de junção de loops aninhados otimizados.

Nested Loops é um operador físico. Para obter mais informações, consulte Noções básicas sobre associaçõ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 os usuários durante a operação de índice.

Online Index Insert é um operador físico.
Nenhum Paralelismo O operador Parallelism (ou Exchange Iterator) executa as operações lógicas de distribuição, coleta de fluxos e reparticionamento de fluxos. O painel Propriedades pode conter um predicado de colunas de partição com uma lista separada por vírgulas das colunas que estão sendo particionadas. O painel Propriedades também pode conter uma ordem por predicado, listando 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 usando a opção Incluir Plano de Execução Real no SQL Server Management Studio não conterá o RunTimeInformation elemento para o operador Parallelism . Na SET STATISTICS PROFILE saída, o número real de contagens de linhas e o número real de execuções exibem zeros para o operador Parallelism. Quando qualquer condição ocorre, isso significa que o operador Parallelism foi usado apenas durante a compilação da consulta e não no plano de consulta de tempo de execução. Às vezes, os planos de consulta paralela são executados em série se houver uma alta carga simultânea no servidor.

O paralelismo é um operador físico. Para obter mais informações sobre o operador de paralelismo, consulte O operador de paralelismo.
Verificação da tabela de parâmetros O operador Parameter Table Scan lê o conjunto interno de linhas produzido durante uma INSERT ... EXEC instrução. Este 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 numa tabela, tabela temporária ou variável de tabela.

Parameter Table Scan é um operador lógico e físico.
Nenhum Agregado parcial O Agregado Parcial é tipicamente utilizado em planos paralelos. Ele aplica uma função de agregação ao maior número possível de linhas de entrada para que a gravação em disco (conhecida como "vazamento") não seja necessária. Hash Match é o único operador físico (iterador) que implementa a agregação parcial.

Agregado parcial é um operador lógico.
Consulta de População O operador Consulta de População preenche 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 numa tabela externa (PolyBase). Ao contrário de outros operadores de inserção, o Put não devolve linhas ao seu operador pai. Em SQL Server 2016 (13.x) até SQL Server 2019 (15.x), o operador Put direciona o Hadoop e executa em modo linha. Em versões SQL Server 2022 (16.x) e posteriores, o operador Put direciona-se para armazenamento compatível com Armazenamento do Azure ou S3 e corre em modo batch. 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 no buffer de busca.

Refresh Query é um operador físico.
Exclusão remota O operador Remote Delete exclui as linhas de entrada de um objeto remoto.

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

O Remote Index Scan é um operador lógico e físico.
Busca remota de índice O operador Remote Index Seek usa a capacidade de 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 de busca .

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

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

O Remote Query é um operador lógico e físico.
Varredura remota O operador Remote Scan verifica um objeto remoto. O nome do objeto remoto aparece no painel Propriedades .

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

A Atualização Remota é um operador lógico e físico.
Fluxos de repartição 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 registo não são alterados. Se o Otimizador de Consultas usar um filtro bitmap, o número de linhas no fluxo de saída é reduzido. Cada registro de um fluxo de entrada é colocado em um fluxo de saída. Se este operador estiver preservando a ordem, todos os fluxos de entrada devem ser ordenados e mesclados em vários fluxos de saída ordenados. Se a saída for particionada, o painel Propriedades conterá um predicado de colunas de partição e as colunas de particionamento. Se a saída for ordenada, o painel Propriedades conterá um predicado de ordenação e as colunas ordenadas. O operador é usado apenas em planos de consulta paralelos.

Repartition Streams é um operador lógico.
resultado O operador Result são os dados retornados no final de um plano de consulta. Este é geralmente o elemento raiz de um plano de exibição.

O resultado é um elemento linguístico.
Pesquisa de RID A Consulta de RID é uma consulta de marcadores num heap usando um identificador de linha fornecido (RID). O painel Propriedades contém o rótulo de marcador usado para consultar a linha na tabela e o nome da tabela na qual a linha é consultada. RID Lookup é sempre acompanhado por um operador Nested Loops.

RID Lookup é um operador físico. Para obter mais informações sobre pesquisas de marcadores, consulte Ler comprometido e Pesquisa de favoritos.
Nenhum Junção Anti Semi à Direita O operador Right Anti Semi Join retorna cada linha da segunda entrada (inferior) quando não existe uma linha correspondente na primeira entrada (superior). Uma linha correspondente é definida como uma linha que satisfaz o predicado no painel Propriedades (se nenhum predicado existir, cada linha é 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 (inferior) com cada linha correspondente da primeira entrada (superior). Ele também retorna todas as linhas da segunda entrada que não tinham linhas correspondentes na primeira entrada, unidas com 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 Right Semi Join 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 Spool de Contagem de Linhas verifica a entrada, contando quantas linhas estão presentes e retornando o mesmo número de linhas sem nenhum dado nelas. Este operador é usado quando é importante verificar a existência de linhas, em vez dos dados contidos nas linhas. Por exemplo, se um operador de Loops Aninhados realizar uma 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 de Loops Aninhados. Em seguida, o operador Nested Loops pode determinar quantas linhas são saídas 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.

Row Count Spool é um operador físico.
Nenhum Repartição de segmento Em um plano de consulta paralelo, às vezes há regiões conceituais de iteradores. Todos os iteradores dentro dessa região podem correr em threads paralelos. As próprias regiões têm de funcionar em série. Alguns dos iteradores de Paralelismo dentro de uma região individual são chamados de Repartição de Ramificação. O iterador de paralelismo no limite de duas dessas regiões é chamado de partição de segmento.

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 estas colunas. O operador usa a coluna de segmento para marcar a primeira linha de cada segmento.

Segmento é um operador físico e lógico.
Projeto de Sequência O operador Sequence Project adiciona colunas para executar cálculos em um conjunto ordenado. 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 devolve apenas as linhas que vêm da sua última entrada (inferior). Usos comuns incluem planos de atualização amplos (onde cada entrada é tipicamente uma atualização de um objeto diferente), consultas que usam funções de tabela com múltiplas instruções e consultas que usam SHORTEST_PATH numa tabela de grafos.

A sequência é um operador lógico e físico.
Instantâneo O operador Snapshot cria um cursor que não vê as alterações feitas por outras pessoas.

Snapshot é um operador físico.
Sort O operador Sort classifica todas as linhas de entrada. O painel Propriedades contém uma ordem distinta por predicado se duplicados forem removidos por esta operação, ou uma ordem por predicado com uma lista separada por vírgulas das colunas que estão sendo classificadas. As colunas são prefixadas com o valor ASC se as colunas forem classificadas em ordem crescente, ou o valor DESC se as colunas forem classificadas em ordem decrescente.

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

Split é um operador lógico e físico.
Fila 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 agregadas retornadas pela consulta. O operador Stream Aggregate requer entrada ordenada pelas colunas dentro de seus grupos. O otimizador usa 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 verificação de índice ordenada. SHOWPLAN_ALL Na instrução ou no plano de execução gráfica no SQL Server Management Studio, as colunas no grupo por predicado são listadas no painel Propriedades e as expressões agregadas são listadas na coluna Valores Definidos.

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

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

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

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

Table Merge é um operador físico.
Varredura de tabela O operador Verificação de Tabela 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.
Carretel de mesa O operador Table Spool verifica a entrada e coloca uma cópia de cada linha em uma tabela de spool oculta que é armazenada no banco de dados tempdb e existente apenas durante o tempo de vida da consulta. Se o operador for rebobinado (por exemplo, por um operador Nested Loops), mas não for necessária uma religação, os dados em spool serão usados em vez de re-escanear a entrada.

Table Spool é um operador físico.
Atualização da tabela O operador Atualização de Tabela atualiza as 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 SET na cláusula ou em outro lugar dentro deste operador e em outro lugar dentro desta consulta.

Atualização de tabela é um operador físico.
Função com valor de tabela O operador Função com valor de tabela 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 pai solicitam as linhas, a Função com valor de tabela retorna as linhas de tempdb.

Consultas com chamadas para funções com valor de tabela geram planos de consulta com o iterador Função com valor de tabela . A função com valor de tabela pode ser avaliada com diferentes valores de parâmetro:

- Função com valor de tabela O leitor XML insere um BLOB XML como um parâmetro e produz um conjunto de linhas que representa nós XML na ordem do documento XML. Outros parâmetros de entrada podem restringir nós XML retornados a um subconjunto de documento XML.

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

Função com valor de tabela é um operador lógico e físico.
Início O operador Top verifica a entrada, retornando apenas o primeiro número especificado ou porcentagem de linhas, 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 vinculações. Nos planos de atualização, o operador Top é usado para impor limites de contagem de linhas.

Top é um operador lógico e físico.
Nenhum Top N Ordenar Top N Sort é semelhante ao iterador Sort , exceto que apenas as primeiras linhas N são necessárias, e não todo o conjunto de resultados. Para valores pequenos de N, o mecanismo de execução de consulta do SQL Server tenta executar toda a operação de classificação na memória. Para valores grandes de N, o mecanismo de execução de consulta 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 das 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 insere na representação XML em uma única coluna BLOB em uma única linha de saída. É um operador de agregação XML sensível a ordens.

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

- Operador estendido (UDX) XML FRAGMENT SERIALIZER é um tipo especial de XML SERIALIZER usado para processar linhas de entrada que representam fragmentos XML a serem inseridos na extensão de modificação de dados de inserção do XQuery.

- O operador estendido (UDX) XQUERY STRING avalia o valor da cadeia de caracteres XQuery das linhas de entrada que representam nós XML. É um operador de agregação de cadeia de caracteres sensível à ordem. Ele gera uma linha com colunas que representam o escalar XQuery que contém o valor da cadeia de caracteres 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, ela produz uma ou mais linhas, cada uma representando XQuery escalar contendo um valor de elemento de 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 cadeia de caracteres sensível à ordem. Ele gera uma linha com colunas que representam o escalar 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 cadeia de caracteres sensível à ordem. Ele gera uma linha com colunas que representam o escalar XQuery que contém o resultado de fn:contains().

- O operador UPDATE XML NODE estendido atualiza o nó XML no XQuery substituindo a extensão de modificação de dados no modify() método no tipo XML.

Os operadores UDX são operadores lógicos e físicos.
União O operador Union varre várias entradas, emitindo cada linha digitalizada e removendo duplicados.

União é um operador lógico.
Update O operador Update atualiza cada linha a partir de sua entrada no objeto especificado no painel Propriedades do plano de execução da consulta.

Update é um operador lógico. O operador físico é Table Update, Index Update, Clustered Index Update ou Columnstore Index Update.
Nenhum Agregado de Janelas O operador Agregação de Janelas avalia uma ou mais expressões de agregação com uma definição de janela e adiciona os resultados ao fluxo de dados.

O Agregado de Janelas é um operador lógico e físico.
Spool de janela O operador Window Spool expande cada linha para o conjunto de linhas que representa a janela associada a ela. Em uma consulta, a OVER cláusula define a janela dentro de um conjunto de resultados de consulta e uma função de janela calcula um valor para cada linha na janela. O operador armazena todas as linhas de entrada numa tabela de trabalho oculta na base 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 armazenamento em linha, o Mecanismo de Base de Dados implementa uma árvore B+. Isso não se aplica a índices de armazenamento em colunas ou a índices em tabelas com otimização de memória. Para obter mais informações, consulte o guia de arquitetura e design de índices do SQL Server e SQL do Azure .