mysql - 我将如何优化这个 WordPress 查询?

标签 mysql wordpress query-optimization

我正在尝试找出下面查询的最佳索引组合。现在是使用临时的;使用文件排序并杀死我的 vps。查询需要 6-10 秒。

SELECT SQL_CALC_FOUND_ROWS 
  wp_posts.ID     
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_term_taxonomy.taxonomy = 'post_tag' 
  AND wp_terms.slug IN ('pie') 
  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

有什么建议吗?

最佳答案

这在性能方面比较如何?

SELECT
  p.ID
FROM 
  wp_posts AS p
WHERE
  1=1
  AND p.post_type = 'post'
  AND p.post_status = 'publish'
  AND EXISTS (
    SELECT 1 
      FROM wp_term_relationships AS r 
           INNER JOIN wp_term_taxonomy AS t ON 
             r.term_taxonomy_id = t.term_taxonomy_id AND t.taxonomy = 'post_tag'
           INNER JOIN wp_terms AS m ON 
             m.term_id = t.term_id AND m.slug IN ('pie') 
     WHERE r.object_id = wp_posts.ID 
  )
ORDER BY 
  p.post_date DESC 
LIMIT 0, 20

索引应位于所有主键和外键、wp_terms.slugwp_term_taxonomy.taxonomy 以及 wp_posts.post_status、post_type 上的复合索引,post_date

关于mysql - 我将如何优化这个 WordPress 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4581120/

相关文章:

mysql - SQL从连接中选择计数返回0而不是空结果

php - 频繁自动重启mysql服务器,然后永久关闭

css - Wordpress 网站上的多个内容背景?

java - 字段出现的文档数量 - MongoDB

azure - 有谁能够在 Azure SQL 仓库上成功执行 SET RESULT_SET_CACHING 吗?

sql-server - 查询中过滤器的顺序应该是什么,以优化查询以使用索引

php - laravel 5.4 如何编写多表查询中的选择

php - iPhone 将独特的图像上传到运行 PHP/MYSQL 的服务器

php - 从输入字段插入 wp DB

javascript - 是否可以增加 WordPress 的最大上传大小?