Quando um índice Columnstore faz com que sua consulta falhe

Quando um índice Columnstore faz com que sua consulta falhe

Quando um índice Columnstore faz com que sua consulta falhe 1
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Se você deseja contar o número de linhas em uma tabela, geralmente eu disse: “Não importa o que você coloca dentro de COUNT () – pode ser COUNT (*), COUNT (Id), COUNT (1) , ou COUNT (‘Chocula’) ou mesmo COUNT (1/0) – tudo funciona da mesma maneira. ”

E isso foi verdade até eu adicionar um índice columnstore.

Comece com o banco de dados Stack Overflow – qualquer tamanho serve – e execute COUNT sem nenhum índice não clusterizado:

Os planos de execução reais para todas as três consultas são os mesmos:

Quando um índice Columnstore faz com que sua consulta falhe 2

Adicione um índice rowstore não clusterizado em qualquer coluna e tente as consultas novamente:

E, novamente, todos os três planos de consulta são os mesmos, porque o SQL Server otimiza o conteúdo de COUNT (), usando o índice nos três casos:

Quando um índice Columnstore faz com que sua consulta falhe 3

O índice é usado sempre. Por anos, desde que Jeremiah Peschka ou Kendra Little (não me lembro qual) me mostrou esse truque 1/0, usei COUNT (1/0) porque é engraçado.

Bem, a risada para quando você adiciona um índice columnstore não clusterizado:

Leia Também  Função de divisão de string no SQL Server - Uma foto do SQLEspresso

Porque apenas duas dessas consultas funcionam! Os dois primeiros funcionam bem, varrendo o índice columnstore não clusterizado, mas a COUNT (1/0) falha com o erro óbvio:

Os planos de execução estimados para as três consultas agora são um pouco diferentes:

Quando um índice Columnstore faz com que sua consulta falhe 4

O plano COUNT (1/0) possui um operador Escalar de computação que os outros dois planos não possuem, e aqui está a definição decepcionante:

Diabólico.

Então, qual é a lição aqui? Bem, não se divirta com o seu T-SQL, acho que, porque mais cedo ou mais tarde, o comportamento do otimizador de consultas de que você depende pode mudar.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br