/ / Покращення виписки MySQL в темі WordPress - mysql, sql, wordpress, query-tuning

Покращення виписки MySQL в темі WordPress - mysql, sql, wordpress, query-tuning

Я використовую WordPress theme Engine з Industrialthemes і бачу, що відображення на першій сторінці використовує багато запитів, які використовуються приблизно 0,4 секунди для запуску в моїй базі даних MySQL. Як і цей:

SELECT SQL_NO_CACHE SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
WHERE 1 =1
AND (wp_term_relationships.term_taxonomy_id IN (1))
AND wp_posts.post_type = "post"
AND (wp_posts.post_status = "publish"
OR wp_posts.post_status = "closed")
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0,  5;

Чи існує якийсь спосіб покращити цей запит? Наскільки я бачу, установка WordPress має індекси за замовчуванням для всіх пов'язаних полів. Мої знання щодо налаштування висловлювань SQL Select не є правильними, тому я сподіваюсь, що деякі експерти допоможуть мені на цьому. Спасибо.

Відповіді:

0 для відповіді № 1
wp_term_relationships needs INDEX(term_taxonomy_id, object_id) -- in this order
wp_posts might benefit from INDEX(post_type, ID, post_status, post_date) -- in this order

Обидва є "покриттям" індексів.
Перший дозволяє JOIN працювати ефективно і дає оптимізатору можливість починати з wp_term_relationships.
Останній повинен працювати добре, незалежно від того, який стіл спочатку виділений.