繁体   English   中英

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

[英]Why are these MySQL queries so slow?

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM