Qual é a junção mais rápida


12

O que é mais rápido

SELECT * FROM X INNER JOIN Y ON x.Record_ID = y.ForignKey_NotIndexed_NotUnique

ou

SELECT * FROM X INNER JOIN Y ON y.ForignKey_NotIndexed_NotUnique = x.Record_ID

Respostas:


17

Não haverá diferença - o mecanismo de consulta no mssql (e na maioria dos mecanismos de banco de dados) criará o mesmo plano de consulta para ambos. Você pode verificar isso visualizando o plano de consulta estimado e real no SQL Workbench.


10

O otimizador ignorará isso porque é um JOIN idêntico.

SQL é declarativo, não processual, e a consulta será avaliada em toto, não linha após linha.


4

Que tal criar um teste que use seus próprios dados para responder sua pergunta?

Se você aprender apenas uma coisa sobre programação de banco de dados, muitas vezes nunca há uma solução única para todas as soluções. É claro que existem práticas recomendadas, mas no geral é sempre caso a caso.

A razão pela qual digo isso é que, com as consultas de banco de dados de relações, geralmente não existe uma abordagem única para qualquer coisa. Como existe um planejador que decide como seguir seus dados, a mesma consulta pode ser rápida ou super lenta, dependendo do que o planejador escolher fazer com as informações disponíveis a qualquer momento. Por exemplo, às vezes, um índice é seu melhor amigo, um mês e um mês depois, seu pior inimigo, dependendo se você estiver pesquisando ou inserindo dados e como outras pessoas estão usando o sistema enquanto você executa a consulta. Por isso, eu sempre recomendo criar um teste que comprove para o seu caso de uso como essa consulta será executada. E mesmo assim, seus resultados podem variar ao longo do tempo e você voltará a otimizar conforme os dados e o uso forem alterados.

Acho que as respostas que você obterá do stackoverflow serão respostas de livros de texto, não a resposta do mundo real que somente seu ambiente pode fornecer. E no final é o resultado do mundo real que importa.

Agora, sua consulta simples que você está mostrando aqui deve ter o mesmo desempenho. Mas mesmo assim eu digo para testá-lo e provar se você está fazendo a pergunta. Confiaria nos resultados antes de confiar na resposta de qualquer pessoa, incluindo a minha.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.