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?

Foi útil?

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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top