Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Use uma união ou uma junção - o que é mais rápido


A união será mais rápida, pois simplesmente passa a primeira instrução SELECT e, em seguida, analisa a segunda instrução SELECT e adiciona os resultados ao final da tabela de saída.

O Join passará por cada linha de ambas as tabelas, encontrando correspondências na outra tabela, portanto, precisando de muito mais processamento devido à busca de linhas correspondentes para cada linha.

EDITAR


Por União, quero dizer União Todos, pois parecia adequado para o que você estava tentando alcançar. Embora uma União normal seja geralmente mais rápida que a Junta.

EDIT 2 (Responder ao comentário de @seebiscuit)


Eu não concordo com ele. Tecnicamente falando, não importa quão boa seja sua junção, um "JOIN" ainda é mais caro do que uma concatenação pura. Fiz uma postagem no blog para provar isso no meu blog codePERF[dot]net . Praticamente falando, eles atendem a 2 propósitos completamente diferentes e é mais importante garantir que sua indexação esteja correta e usando a ferramenta certa para o trabalho.

Tecnicamente, acho que pode ser resumido usando os 2 planos de execução a seguir retirados da minha postagem no blog:

UNION ALL Plano de Execução



JOIN Plano de Execução



Resultados práticos


Praticamente falando, a diferença em uma pesquisa de índice clusterizado é insignificante: