Цель этого запроса - вести себя как поиск. К сожалению, запрос в настоящее время выполняется от 1,5 до 2 секунд, что недопустимо. После запуска EXPLAIN для запроса, я вижу, что он использует «Использование временного; Использование сортировки файлов» и никаких индексов. Однако я не совсем уверен, где можно разместить индекс для этого запроса.
ORDER BY также значительно замедляет запрос, но это необходимо.
Любые предложения о том, как улучшить этот запрос?
SELECT DISTINCT p.id, p.date,
(
SELECT COUNT(post_id) FROM post_tags WHERE post_id = pt.post_id
) as t_count
FROM post_tags pt
INNER JOIN posts p
ON (pt.post_id = p.id)
WHERE pt.t_id IN (7,456)
ORDER BY t_count, p.s_count DESC, p.id DESC
LIMIT 0, 50;
Вот оператор EXPAIN: https://gist.github.com/e742982e435cf082c033