有没有关于如何加快wordpress查询速度的提示 meta_value
在 postmeta
table? postmeta
这个表包含了不到500万条记录。自定义wp插件处理数据的时间太长。我追踪了哪个查询实际上变慢了,发现了这个。该查询是在 get_posts
是运行的,但这一个占用99%的处理时间。
SELECT wp_wordpress_posts.* FROM wp_wordpress_posts
INNER JOIN wp_wordpress_postmeta ON (wp_wordpress_posts.ID = wp_wordpress_postmeta.post_id)
INNER JOIN wp_wordpress_postmeta AS mt1 ON (wp_wordpress_posts.ID = mt1.post_id)
WHERE 1=1
AND wp_wordpress_posts.post_type = 'my_booking'
AND (wp_wordpress_posts.post_status = 'publish')
AND ( (wp_wordpress_postmeta.meta_key = '_rooms' AND CAST(wp_wordpress_postmeta.meta_value AS CHAR) = '236742')
AND (mt1.meta_key = '_bookingDate' AND CAST(mt1.meta_value AS CHAR) = '2018-09-18') )
GROUP BY wp_wordpress_posts.ID ORDER BY wp_wordpress_posts.post_date DESC
我开始测试一个简化版本
SELECT wp_wordpress_postmeta.* FROM wp_wordpress_postmeta
WHERE meta_key = '_rooms' AND CAST(meta_value AS CHAR) = '236742'
处理此查询大约需要一秒钟。我意识到不管是谁写的插件,都会将可搜索的数据存储在 meta_value
字段设置为 LONGTEXT
所以它不能被索引。由于可搜索的数据非常短,我在 meta_key
以及 meta_value
更改表格 wp_wordpress_postmeta
添加键(meta_键(100),meta_值(100))
我运行了短查询,它提高了速度,使查询运行速度提高了5倍。我又尝试了一次长查询,但没有任何改进。我试着从长查询中运行另一个查询
SELECT wp_wordpress_postmeta.* FROM wp_wordpress_postmeta
WHERE meta_key = '_bookingDate' AND CAST(meta_value AS CHAR) = '2018-09-18'
处理此查询大约需要一秒钟。为什么这个查询与第一个索引相比没有改进?我该怎么修?
暂无答案!
目前还没有任何答案,快来回答吧!