No Join Predicate – SQL Server

Olá pessoal.

Vamos ao um case real, é bom ter essas histórias do dia-a-dia, pois assim ficamos mais ligeiros para não perder tempo fazendo o que seria mais simples, veja a seguir:

Um belo dia você lá no seu trabalho todo preocupado em manter a perfomance do seu ambiente, aí você olha para o lado e vê um dos desenvolvedores tentando montar uma query, ele olha para você e diz que está fazendo uma consulta simples, porém está demorando muito e para completar ainda pergunta se está tudo bem no banco?

Você todo inocente fala:
“Aqui tudo bem, sem lock, por enquanto…”, e completa, precisa de ajuda?

O desenvolvedor aproveita, diz que deve ser muitos dados… Nessa hora você pensa, deixa eu ver o plano de execução dessa sua consulta, manda a query aí para eu ver o plano dela.

Aí você já parte para o CTRL+M (Teclas de atalho para habilitar o plano de execução no SSMS – SQL Server Management Studio) e após a execução da query, você se depara com a figura abaixo:

OperadorError

Você que está aprendendo tudo sobre performance, se pergunta:
Que erro é esse aí? Como surgiu? E comenta em voz baixa nunca vi isso aí não…
Procura nas apostilas da faculdade e nada, aí você para e pensa, deixa eu ver essa query melhor, quando passa conferindo os joins, percebe que o JOIN está errado, pronto, problema resolvido.

OperadorSemErro

veja como resolver:

O exemplo da query abaixo é o mais simples para facilitar nosso entendimento.

A causa do erro:

QueryErrorOperator

Alterando a junção entre a tabela A e a Tabela B, problema resolvido, assim deixando sua query mais rápida e correta.

Agora já sabemos que um operador com erro, devemos verificar se não está faltando um predicate, pois a falta dele na junção(Join) causa o erro visto no operador.

Espero ter ajudado com mais essa dica.

Até mais.

Felippe Oliveira

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s