У меня есть два запроса ниже. Первый имеет вложенный выбор. Во втором используется предложение group by.Производительность вложенных запросов
select
posts.*,
(select count(*) from comments where comments.post_id = posts.id and comments.is_approved = 1) as comments_count
from
posts
select
posts.*,
count(comments.id) comments_count
from
posts
left join comments on
comments.post_id = posts.id
group by
posts.*
Из моего понимания первый запрос хуже, потому что он должен сделать выбор для каждой записи в сообщениях, где в качестве второго запроса не делает.
Это правда или ложь?
Второй не работает вообще, вам нужно присоединиться к 'comments' в' posts'. Кроме того, я никогда не группировался таким образом, поэтому я не могу быть уверенным, но даже если это юридический синтаксис, ваш «GROUP BY» будет таким же эффективным и, возможно, быстрее, если вы просто сделали «GROUP BY posts.post_id» '. Кроме того, как только правильно написано, я ожидаю, что последнее будет быстрее. – Uueerdo
спасибо ... жаль, что я пропустил, включая левое соединение, отредактированное, чтобы включить его. –