2010-01-25 3 views
4

Y at-il une différence notable entre:MySQL SELECTs embarqué vs JOIN

SELECT userid, username, userdept, 
    (SELECT deptname FROM depts WHERE deptid=userdept) AS deptname 
    FROM users 

et

SELECT userid, username FROM users 
    INNER JOIN depts ON depts.deptid=users.userdept 

Lequel est le meilleur?

Répondre

1

Ces deux requêtes ne sont pas des synonymes.

Ils seraient les synonymes si vous avez remplacé le INNER JOIN avec le LEFT JOIN, à l'exception que la sous-requête est un sujet à l'échec si deptid est pas unique, alors qu'un LEFT JOIN sera toujours réussir.

S'il existe un index UNIQUE sur depts.deptid (ce qui est probablement le cas, car ce champ est probablement un PRIMARY KEY), la différence de performance serait négligeable.