以下查询在查询监视器下作为慢速查询返回。大约需要0.4秒。有什么方法可以提高其查询速度?
在同一表(wp_postmeta)下查询,获取2组meta_key和meta_value作为其条件
SELECT p.post_id as id
FROM `wp_postmeta`as p, `wp_postmeta`as b
WHERE p.post_id = b.post_id
AND (b.meta_key = 'gift_price' and b.meta_value != '')
AND (p.meta_key = '_stock_status' and p.meta_value = 'instock')
我尝试使用gift_price的meta_value> 1,它实际上使它放慢了更多速度。
答案 0 :(得分:0)
WP中的“元”表具有无效的架构规范。建议:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta
答案 1 :(得分:0)
索引wp_postmeta表
ALTER TABLE `wp_postmeta`
ADD INDEX `IndexName` (`post_id` ASC, `meta_key` ASC, `meta_value` ASC);
使用EXPLAIN并检查索引是否正常
EXPLAIN SELECT p.post_id as id
FROM `wp_postmeta`as p, `wp_postmeta`as b
WHERE p.post_id = b.post_id
AND (b.meta_key = 'gift_price' and b.meta_value != '')
AND (p.meta_key = '_stock_status' and p.meta_value = 'instock')