Diferença de " a partir de uma junção à esquerda b "vs."A, b"
As perguntas fazem o mesmo? Qual é o padrão?
Vou perder o desempenho se mudar uma destas formas de escrever a consulta?
Query 1
SELECT a.*, b.id AS b_id
FROM table_a AS a
LEFT JOIN table_b AS b
ON a.id = b.id
Query 2
SELECT a.*, b.id AS b_id
FROM table_a a, table_b b
WHERE a.id = b.id
0
Author: Jensen Ching, 2012-11-06
1 answers
Eles devolvem resultados diferentes.
Uma declaração de junção à esquerda irá devolver as linhas, mesmo que não existam registos associados no table_ B que correspondam ao ID do table_a. Por isso, irá devolver todas as linhas em table_ a, emparelhadas com uma linha correspondente em table_ A ou uma linha table_ B em branco/nulo (se para essa linha em table_ a não existir nenhuma linha correspondente em table_ B).
A segunda consulta é um atalho para uma junção interna. Esta pesquisa só irá devolver exclusivamente as linhas que correspondem à condição a.id = b.id
. Segundo a consulta também pode ser escrita como:
SELECT a.*, b.id AS b_id
FROM table_a a
INNER JOIN table_b b
ON a.id = b.id
Para responder à sua pergunta de desempenho, por favor veja as respostas num tópico relacionado com SO Aqui.
5
Author: Jensen Ching, 2017-05-23 12:27:43