Eu estava tentando responder a esta pergunta afirmando que a cláusula é opcional .. Mas estou preso com um operador no plano .. abaixo está a captura de tela do plano de execução ..
Como você pode ver, há um operador BMK no plano de consulta, mas nenhuma indicação mostrando como ele é calculado.
passos que tentei até agora:
comecei a pesquisar com BMK1000, mas ele mostra um monte de perguntas com o mesmo operador. finalmente encontrei um tópico que diz "O BMK que você está referenciando é o local de armazenamento dentro do heap que é mantido com o índice não clusterizado em vez da chave do cluster."..Mas não tenho certeza de como isso está relacionado a mim, já que não tenho nenhum índice..
PERGUNTE:
o que é o operador BMK e como ele é calculado. Quaisquer ponteiros também serão úteis
Aqui está o SQLFiddle para reproduzir o problema
Não é um operador por direito próprio. É uma coluna de saída do operador de varredura de tabela no heap. É o "marcador" que contém o endereço físico da linha (este é o mesmo marcador referido na frase "pesquisa de marcador").
Isso é passado ao longo do pipeline para o operador de atualização para que ele saiba a linha que deve atualizar.
No SQL Server 2016, você pode ver os valores reais dessa coluna usando o
query_trace_column_values
evento estendidoConectando-os
sys.fn_PhysLocFormatter
mostra ofile:page:slot
devoluções