2010-01-25 18 views
4

有之間的顯着差異:MySQL的嵌入式的SELECT JOIN的對比

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

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

哪一個更好?

回答

1

這兩個查詢不是同義詞。

它們將是同義詞,如果你與LEFT JOIN取代INNER JOIN,不同之處在於子查詢是要失敗的一個主題,如果deptid不是唯一的,而LEFT JOIN總是會成功的。

如果在depts.deptid上有UNIQUE索引(很可能是,因爲該字段最有可能是PRIMARY KEY),所以性能差異可以忽略不計。