wordpress生成慢速mysql查询 - 它是索引问题吗?

时间:2010-03-15 15:26:56

标签: wordpress mysql

我的WordPress网站上出现了很慢的Mysql查询。它使一切变得缓慢,我认为这会占用CPU使用率。我已经为下面两个最常见问题的查询粘贴了Explain结果。这是一个典型的结果 - 尽管偶尔查询似乎确实以更正常的速度执行。

我在数据库表上有通常的wordpress索引。您将看到其中一个查询是从wordpress核心代码生成的,而不是来自我的网站的任何特定内容(如主题)。

我有一种模糊的感觉,数据库并不总是使用索引/没有正确使用它们......

这是对的吗?有谁知道如何修理它?或者它完全是一个不同的问题?

非常感谢任何人提供的任何帮助 - 非常感谢

查询:[wp-blog-header.php(14):wp()]

SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') ORDER BY wp_posts.post_date DESC LIMIT 0, 6
id
select_type
table
type
possible_keys
key
key_len
ref
rows
Extra
1
SIMPLE
wp_posts
ref
type_status_date
type_status_date
63
const
427
Using where; Using filesort
Query time: 34.2829 (ms)

9)查询:[wp-content / themes / LMHR / index.php(40):query_posts()]

SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.ID NOT IN ( SELECT tr.object_id FROM wp_term_relationships AS tr INNER JOIN wp_term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy = 'category' AND tt.term_id IN ('217', '218', '223', '224') ) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') ORDER BY wp_posts.post_date DESC LIMIT 0, 6
id
select_type
table
type
possible_keys
key
key_len
ref
rows
Extra
1
PRIMARY
wp_posts
ref
type_status_date
type_status_date
63
const
427
Using where; Using filesort
2
DEPENDENT SUBQUERY
tr
ref
PRIMARY,term_taxonomy_id
PRIMARY
8
func
1
Using index
2
DEPENDENT SUBQUERY
tt
eq_ref
PRIMARY,term_id_taxonomy,taxonomy
PRIMARY
8
antin1_lovemusic2010.tr.term_taxonomy_id
1
Using where
Query time: 70.3900 (ms)

2 个答案:

答案 0 :(得分:1)

选中此http://core.trac.wordpress.org/ticket/10964

问题是SQL_CALC_NUM_ROWS,当您执行get_posts查询时,WordPress会自动设置此参数,这会使查询变慢。

答案 1 :(得分:0)

您可以尝试使用wp-cache插件。 另外,您可以阅读此article,它解释了SQL_CALC_FOUND_ROWS不是查询的最佳解决方案。