缓慢的 MySQL UPDATE 查询
Posted
技术标签:
【中文标题】缓慢的 MySQL UPDATE 查询【英文标题】:Slow MySQL UPDATE query 【发布时间】:2010-09-13 09:32:39 【问题描述】:我有一个包含 400,000 行的 mysql 表
每当我运行 php 脚本来更新一行时,大约需要 3-4 秒。
如何优化更新查询?
UPDATE `weakvocab` SET `times` = times+1, `wrong` = wrong+1, `mtime` = 1284369979 WHERE `owner` = 'owner_name' AND `vocID` = 'ID_number' AND `type` = 'type_name';
这个查询是关于在回答一个问题后更新用户数据,所以我需要一个快速的查询来给用户更好的加载下一个问题的体验。
谢谢,
【问题讨论】:
【参考方案1】:您的 WHERE 条件中的列是否已编入索引?把 UPDATE 改成 SELECT 看看 Mysql 是怎么执行的:
EXPLAIN SELECT * FROM `weakvocab` WHERE `owner` = 'owner_name' AND `vocID` = 'ID_number' AND `type` = 'type_name';
将结果粘贴到这里
【讨论】:
无解释的选择快0.2s左右 @bn 问题不在于 EXPLAIN 的速度,而在于结果。 @bnEXPLAIN
会告诉你是否需要添加任何索引,就像@Mark Byers 在他的回答中提到的那样。【参考方案2】:
您可以尝试在(owner_name, vocID, type)
上添加索引,以便更快地找到要更新的记录。
【讨论】:
如何添加索引,会影响现有数据吗?以上是关于缓慢的 MySQL UPDATE 查询的主要内容,如果未能解决你的问题,请参考以下文章