Оба запроса написаны стандартным способом, он будет работать практически во всех СУБД .Но, если вы беспокоитесь о производительности, я бы вместо этого использовал 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;