哪个查询是标准的和最优的?
这个:
SELECT p.*
FROM posts p
JOIN favorites f ON p.id = f.post_id
WHERE f.user_id = ?
或者这个:
SELECT p.*
FROM posts p
JOIN favorites f ON p.id = f.post_id
AND f.user_id = ?
最佳答案
这两个查询都以标准方式编写,几乎适用于所有DBMS。但是,如果您关心性能,那么我会改用 EXISTS
。
select p.*
from posts p
where exists (select 1
from favorites f
where p.id = f.post_id and f.user_id = ?
);
对我来说,在 ON
子句或 WHERE
子句中进行过滤只是风格的问题,它如何查找 INNER JOIN
。所以,我会选择 WHERE
子句:
SELECT p.*
FROM posts p INNER JOIN
favorites f
ON p.id = f.post_id
WHERE f.user_id = ?
ORDER BY f.date_time DESC;
关于mysql - 条件写在 Where 子句上好还是 ON 子句好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50646074/