Условия написания условия «Где лучше» или «ON»? - PullRequest
0 голосов
/ 01 июня 2018

Какой запрос является стандартным и оптимальным?

Это:

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 = ? 

1 Ответ

0 голосов
/ 01 июня 2018

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