同一张表中的mysql查询优化

时间:2020-03-09 19:02:46

标签: mysql database optimization

以下查询在查询监视器下作为慢速查询返回。大约需要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,它实际上使它放慢了更多速度。

2 个答案:

答案 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')