在“meta\u value”中搜索值时加速wordpress查询`

pbpqsu0x  于 2021-06-19  发布在  Mysql
关注(0)|答案(0)|浏览(186)

有没有关于如何加快wordpress查询速度的提示 meta_valuepostmeta 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'

处理此查询大约需要一秒钟。为什么这个查询与第一个索引相比没有改进?我该怎么修?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题