2

我不明白为什么以下查询出现在慢查询日志中,查询时间为 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 中执行其中 1 个进行测试只需要 0.0056 秒。
这里的表格大小wp_postmeta是 77,996。

我想知道为什么上面的查询这么慢,如果有什么我可以做的来改进它们?

4

2 回答 2

8

比@Sandeep 建议使用的更好的索引是:

CREATE INDEX <some index name>
ON wp_postmeta (meta_key, post_id);

该索引将捕获所有WHERE子句并使数据库引擎能够快速转到正确的行。

于 2013-02-15T09:14:33.770 回答
4

在“post_id”列上创建索引。它会解决你的问题。

当数据量很大时,索引在查询优化中发挥着重要作用。

于 2013-02-15T09:10:44.580 回答