【发布时间】:2011-06-13 12:54:01
【问题描述】:
我对“两个或多个单独的 SQL 命令”或“1 但使用 'join' SQL 命令”的性能表示怀疑。
事情是这样的:
比如我有两张表:post,user
post 有一个 user_id 表示此帖子是由user 中的某个用户发布的
我将同时提取帖子和用户名。
我也可以
SELECT * FROM `post` LEFT JOIN `user` on post.user_id = user.id WHERE 1或
$rows = $db->sql("SELEFT * FROM `post` WHERE 1") 对于 $rows 中的 $row: $db->sql("SELECT * FROM `user` WHERE id = $row['user_id']")我想知道哪个性能更好?
如果我有 3 个或更多表要加入,哪种方式会更好(从性能角度来看)?
【问题讨论】:
-
与 INNER JOIN 相比,使用 LEFT JOIN(或 RIGHT JOIN 或 FULL JOIN)有一个(通常很小,但不是零)性能损失。如果可以,请避免使用 LEFT JOIN 并仅使用 JOIN。你会有没有用户记录的帖子吗?如果不是(你不应该),那么 INNER JOIN 是合适的。
标签: mysql