У меня есть следующий запрос: MySQLMySQL JOIN/IN оптимизации производительности
SELECT
p.post_id,
p.date_created,
p.description,
p.last_edited,
p.link,
p.link_description,
p.link_image_url,
p.link_title,
p.total_comments,
p.total_votes,
p.type_id,
p.user_id
FROM posts p JOIN posts_to_tribes ptt ON p.post_id=ptt.post_id
WHERE ptt.tribe_id IN (1, 2, 3, 4, 5)
GROUP BY p.post_id
ORDER BY p.last_edited DESC, p.total_votes DESC LIMIT 25
В не-параллельной среде работает этот запрос ~ 172ms, но в параллельной среде работает 1-2 сек (во время тестирования производительности).
EXPLAIN выход:
Индексы на столе posts_to_tribes:
Есть ли способ для того, чтобы улучшить производительность здесь?
там может быть индекс ptt.tribe_id –
Основное правило: любое поле, используемое в контексте «решения» (присоединиться, где, упорядочить по) должны иметь индекс на нем. –
Спасибо за ваши ответы, я добавил индекс на posts_to_tribes.tribe_id, но ничего не изменилось .. запрос работает ~ 188ms прямо сейчас .. может быть, я делаю что-то неправильно .. – alexanoid