Я изучаю это в течение нескольких часов, и лучший код, который я придумал, - это пример, который я нашел в overstack. Я прошел через несколько дериваций, но следующий - единственный запрос, который возвращает правильные данные, проблема в том, что он берет 139 (более 2 минут), чтобы возвращать только 30 строк данных. Я застрял. (Life_p является «любит»mysql Несколько левых объединений с использованием count
SELECT
logos.id,
logos.in_gallery,
logos.active,
logos.pubpriv,
logos.logo_name,
logos.logo_image,
coalesce(cc.Count, 0) as CommentCount,
coalesce(lc.Count, 0) as LikeCount
FROM logos
left outer join(
select comments.logo_id, count(*) as Count from comments group by comments.logo_id
) cc on cc.logo_id = logos.id
left outer join(
select life_p.logo_id, count(*) as Count from life_p group by life_p.logo_id
) lc on lc.logo_id = logos.id
WHERE logos.active = '1'
AND logos.pubpriv = '0'
GROUP BY logos.id
ORDER BY logos.in_gallery desc
LIMIT 0, 30
Я не уверен, что случилось, если я делаю их по отдельности meaningremove в coalece и один из объединений:.
SELECT
logos.id,
logos.in_gallery,
logos.active,
logos.pubpriv,
logos.logo_name,
logos.logo_image,
count(*) as lc
FROM logos
left join life_p on life_p.logo_id = logos.id
WHERE logos.active = '1'
AND logos.pubpriv = '0'
GROUP BY logos.id
ORDER BY logos.in_gallery desc
LIMIT 0, 30
, который работает меньше, чем половина сек (2-300 мс) ....
Вот ссылка на объяснения: https://logopond.com/img/explain.png
overstack я имею в виду здесь 'stackoverflow': D, Thanks Jorge Мне было интересно, как исправить отображение кода –
Pls добавляет результат объяснения и PLS также перечисляет индексы на 3 затронутых таблицах! – Shadow
Комментарии.logo_id, life_p.logo_id и логотипы.id индексируются по их соответствующим таблицам. Таблица комментариев и логотипов содержит несколько столбцов, а некоторые из них индексируются, но не связаны с запросом в таблице. heres ссылка на объяснение https://logopond.com/img/explain.png –