mariadb 在WordPress上从SELECT COUNT(*)中获取慢速查询

33qvvth1  于 2022-11-08  发布在  WordPress
关注(0)|答案(1)|浏览(135)

我有下面的查询,它给我一个计数32,000。

SELECT  COUNT(*)
    FROM  wp_term_relationships, wp_posts
    WHERE  wp_posts.ID = wp_term_relationships.object_id
      AND  post_status IN ('publish')
      AND  post_type IN ('ac_listings', 'ac_fields')

# Query_time: 3.324099  Lock_time: 0.000061  Rows_sent: 1  Rows_examined: 107818

# Rows_affected: 0  Bytes_sent: 67

但是它经常出现在我的MariaDB慢速查询日志中。我该如何解决这个问题?
这些是WP中的默认索引。

PRIMARY KEY (`ID`),
INDEX `post_name` (`post_name`(191)),
INDEX `type_status_date` (`post_type`, `post_status`, `post_date`, `ID`),
INDEX `post_parent` (`post_parent`),
INDEX `post_author` (`post_author`)

PRIMARY KEY (`object_id`, `term_taxonomy_id`),
INDEX `term_taxonomy_id` (`term_taxonomy_id`)

P/S:我猜这可能是导致我的网站的间歇性数据库连接错误。我运行的AWS EC2上的微型t2和4GB内存,我只有8人/编辑在网站上同时。

1tuwyuhd

1tuwyuhd1#

posts需要一个以这两列开头的复合索引,顺序为:

INDEX(post_status, post_type)

这样,我希望看到查询时间减少,也Rows_examined: 107818。仍然需要一些时间来涉水通过所有32K关系的一些职位。
另请参阅:WP Index Improvements,特别是使用post_meta的查询。

相关问题