假设我有一个3列的表:ID (PK), Name, Age.
假设ID有一个索引,name在上面有一个索引,还有另一个将id和name组合在一起的索引。假设我现在有一个update语句,如下所示:
UPDATE table SET AGE = 69 WHERE id = 'some_id';我只是在更新AGE列,所以即使索引列中没有被修改,MySQL仍然会更新索引吗?
发布于 2016-04-07 22:57:57
认为当前数据库足够聪明,不更新数据未更改的索引是合乎逻辑的。
但是这种逻辑应该得到Mysql手册的直接支持。我在页面上找到了一条描述Speed of UPDATE Statements的声明:
update语句像SELECT查询一样被优化,并增加了写入的开销。写入的速度取决于要更新的数据量和更新的索引数。未更改的索引不被更新。
发布于 2016-04-08 03:06:41
UPDATE table SET AGE = 69 WHERE id = 'some_id';将非常有效地执行,因为id是PRIMARY KEY。
因为AGE不在任何索引中,所以不会修改INDEX。
https://dba.stackexchange.com/questions/134696
复制相似问题