哪种查询是标准的和最佳的?
此:
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 = ?
答案 0 :(得分:0)
两个查询都以标准方式编写,几乎可以在所有 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;