【发布时间】:2011-07-21 00:04:11
【问题描述】:
我有一个主要更新的表,我想知道更新查询是否会受益于在 where 列和更新的列上设置索引或在 where 列上设置索引?
【问题讨论】:
-
WHERE中的列上的索引(可能)会有所帮助。可能意味着它会帮助等效的SELECT。例如,如果您有WHERE id > 3条件并且几乎所有 id 都 > 3,则不会使用索引。 -
关于问题的第二部分,
(wherecolumn, updatedcolumn)上的索引也可能有所帮助。但我认为只是因为 MySQL 检查并且不更新更新值与列的现有值相同。因此,如果grp=47和a已经等于7的行有很多行,UPDATE t SET a=7 WHERE grp=47可能会形成(grp,a)索引。 -
你用的是什么存储引擎,表的结构是什么,更新查询是什么?这些都可能对答案产生影响。