我不明白为什么以下查询会出现在慢查询日志中,查询时间为12到20秒。
UPDATE `wp_postmeta` SET `meta_value` = '35' WHERE `post_id` = 1267 AND `meta_key` = 'views'
UPDATE `wp_postmeta` SET `meta_value` = '32' WHERE `post_id` = 874 AND `meta_key` = 'views'
UPDATE `wp_postmeta` SET `meta_value` = '122' WHERE `post_id` = 18557 AND `meta_key` = 'views'
UPDATE `wp_postmeta` SET `meta_value` = '3078' WHERE `post_id` = 21741 AND `meta_key` = 'views'
UPDATE `wp_postmeta` SET `meta_value` = '2657' WHERE `post_id` = 878 AND `meta_key` = 'views'
它们看起来很正常,在phpMyAdmin中执行其中一个测试只需要0.0056秒
这里wp_postmeta
表的大小是77,996。
我想知道上面的查询为什么这么慢,如果我有什么办法可以改进它们呢?
答案 0 :(得分:8)
比@Sandeep建议使用的指数更好:
CREATE INDEX <some index name>
ON wp_postmeta (meta_key, post_id);
此索引将捕获所有WHERE
子句,并使数据库引擎能够快速转到右侧。
答案 1 :(得分:4)
在列“post_id”上创建索引。它会解决你的问题。
当数据量很大时,索引在查询优化中起着重要作用。