为什么这些MySQL查询这么慢?

时间:2013-02-15 09:08:03

标签: mysql wordpress mysql-slow-query-log

我不明白为什么以下查询会出现在慢查询日志中,查询时间为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。

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

2 个答案:

答案 0 :(得分:8)

比@Sandeep建议使用的指数更好:

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

此索引将捕获所有WHERE子句,并使数据库引擎能够快速转到右侧。

答案 1 :(得分:4)

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

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