sage
Новичок
Выборка последних комментариев. Прямой эфир.
Есть таблица comments (887 записей), в которой idobject - это id статьи или обсуждения, а object_type - 3 (статья) или 4 (обсуждение). Требуется реализовать прямой эфир (можно глянуть, например, на хабре): выбрать 20 последних (по дате добавления) комментариев из статей и обсуждений. При этом из каждой статьи и обсуждения выбирается только 1 последний комментарий. Что у меня получилось:
[sql]
SELECT `idcomments`, `idusers`, `idobject`, `object_type`
FROM `comments`
WHERE `idstatus` = 1 AND `object_type` IN (3, 4) AND `rating` >= 0 AND `idcomments` = ANY (SELECT MAX(`idcomments`) FROM `comments` GROUP BY `idobject`)
ORDER BY `added` DESC
LIMIT 20
[/sql]
Запрос работает верно, но выполняется 6 секунд (phpMyAdmin). Есть какие-нить способы оптимизации? Мб, кто-то делал раньше - как вы это реализовывали? Всем заранее спасибо.
Есть таблица comments (887 записей), в которой idobject - это id статьи или обсуждения, а object_type - 3 (статья) или 4 (обсуждение). Требуется реализовать прямой эфир (можно глянуть, например, на хабре): выбрать 20 последних (по дате добавления) комментариев из статей и обсуждений. При этом из каждой статьи и обсуждения выбирается только 1 последний комментарий. Что у меня получилось:
[sql]
SELECT `idcomments`, `idusers`, `idobject`, `object_type`
FROM `comments`
WHERE `idstatus` = 1 AND `object_type` IN (3, 4) AND `rating` >= 0 AND `idcomments` = ANY (SELECT MAX(`idcomments`) FROM `comments` GROUP BY `idobject`)
ORDER BY `added` DESC
LIMIT 20
[/sql]
Запрос работает верно, но выполняется 6 секунд (phpMyAdmin). Есть какие-нить способы оптимизации? Мб, кто-то делал раньше - как вы это реализовывали? Всем заранее спасибо.