/ / Подобряване на MySQL Select изявление в WordPress тема - mysql, sql, wordpress, query-tuning

Подобряване на израза MySQL Select в WordPress - mysql, sql, wordpress, query-tuning

Аз използвам темата "Двигател от Industrialthemes" на WordPress и виждам, че рендирането на първата страница използва много заявки, които използват около 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.
Последните трябва да работят добре, независимо коя маса е избрана на първо място.