2015-10-04 67 views
0

我使用Industrialthemes的WordPress主題引擎,並且看到頭版的渲染使用了大量使用大約0.4秒的查詢來運行在我的MySQL數據庫中。像這樣:改善WordPress主題中的MySQL Select語句

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

沒有建議來改善此SELECT語句嗎?也許不可能讓它變得更好...... – Frank

回答

0
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開頭的選項。
無論首先選擇哪張表,後者應該工作得很好。