MySQL Embedded Selects vs.
-
22-09-2019 - |
Pergunta
Existe uma diferença notável entre:
SELECT userid, username, userdept,
(SELECT deptname FROM depts WHERE deptid=userdept) AS deptname
FROM users
e
SELECT userid, username FROM users
INNER JOIN depts ON depts.deptid=users.userdept
Qual é o melhor?
Solução
Sua segunda consulta tem melhor desempenho.
Você pode ver este exemplo: http://www.codersrevolution.com/index.cfm/2008/7/31/mysql-performance-inner-join-vs-subselect
Outras dicas
junção é melhor,
Veja este link:http://www.selikoff.net/2008/12/10/memo-avoid-nested-queries-in-mysql-at-al-costs/
você pode ver o muitas discussões em So sobre este tópico também.
Essas duas consultas não são sinônimos.
Eles seriam os sinônimos se você substituísse o INNER JOIN
com o LEFT JOIN
, com a exceção de que a subconsência é sujeita a falha se deptid
não é único, enquanto um LEFT JOIN
sempre terá sucesso.
Se houver um UNIQUE
índice on depts.deptid
(o que provavelmente é, já que esse campo é provavelmente um PRIMARY KEY
), então a diferença de desempenho seria insignificante.