我有下面的查询,它给我一个计数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人/编辑在网站上同时。
1条答案
按热度按时间1tuwyuhd1#
posts
需要一个以这两列开头的复合索引,顺序为:这样,我希望看到查询时间减少,也
Rows_examined: 107818
。仍然需要一些时间来涉水通过所有32K关系的一些职位。另请参阅:WP Index Improvements,特别是使用
post_meta
的查询。