mysql - WordPress 查询时间慢

标签 mysql database

我正在 MU wordpress 网站上工作,我在查询中遇到问题,执行时间太长。

SELECT wp_posts.* FROM wp_posts 
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) 
INNER JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) 
INNER JOIN wp_terms ON (wp_term_taxonomy.term_id = wp_terms.term_id) 
WHERE 1=1 AND wp_posts.blog_id = '1'
AND wp_term_taxonomy.taxonomy = 'post_tag' 
AND wp_terms.slug IN ('rate') 
AND wp_posts.post_type = 'post' 
AND (wp_posts.post_status = 'publish') 
GROUP BY wp_posts.ID 
ORDER BY wp_posts.post_date DESC 
LIMIT 0, 20

这个查询是由wordpress执行的,执行需要30-40秒,这太长了。

  • wp_posts:4,00,000 行
  • wp_terms:2,50,000 行
  • wp_term_relationship:2,30,000 行
  • wp_term_taxonomy:2,60,000 行

我已经对(使用的)列建立了索引。

最佳答案

尝试解释如下。

将以下内容粘贴到 phpmyadmin 并执行它:-

EXPLAIN SELECT wp_posts.* FROM wp_posts 
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) 
INNER JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) 
INNER JOIN wp_terms ON (wp_term_taxonomy.term_id = wp_terms.term_id) 
WHERE 1=1 AND wp_posts.blog_id = '1'
AND wp_term_taxonomy.taxonomy = 'post_tag' 
AND wp_terms.slug IN ('rate') 
AND wp_posts.post_type = 'post' 
AND (wp_posts.post_status = 'publish') 
GROUP BY wp_posts.ID 
ORDER BY wp_posts.post_date DESC 
LIMIT 0, 20

然后复制结果并将其粘贴到您原来的问题中。它将提供哪些表中使用了哪些键等详细信息。

关于mysql - WordPress 查询时间慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17105453/

相关文章:

php - WordPress 从主机迁移到本地服务器

mysql - Rails has_and_belongs_to 与主键删除销毁时的所有记录

html - 无法使用PDO和ajax插入数据

mysql - 使用Mysql GIS功能计算最近的地方

sql-server - 是否有适用于 SQL Server 2005 的数据大小调整工具?

mysql - 加快返回许多结果的 mysql 查询

sql - 是否所有 RDBMS 都有可与 Oracle 相媲美的数据字典?

mysql - 订单周数和相应。 mysql 中从 51 开始到第 12 周结束的数据

php - 尝试使用 PDO 将表单数据插入数据库时​​不断出现错误

mysql - 通过互联网远程连接mysql数据库