【发布时间】:2011-01-13 22:39:39
【问题描述】:
假设我有一个包含两列 A 和 B 的表。A 列有索引,但 B 列没有索引。 我想发出几百万个查询,例如:
UPDATE t1 SET b=b1 WHERE a=a1;
UPDATE t1 SET b=b2 WHERE a=a2;
....
有 1 到 100,000 行对应于 a 的每个唯一值。平均来说是 100 左右。
对于每个更新语句,平均 60% 的行不会更改,因为这些行 b 已经具有所需的值。对于 30% 的更新,不会更改任何匹配的行。
使用这样的语句有意义吗?
UPDATE t1 SET b=b1 WHERE a=a1 AND b<>b1;
它会通过消除不必要的磁盘写回来加速这个过程,还是 Mysql 5 足够聪明,可以识别出没有任何变化并且不需要写回磁盘?
【问题讨论】:
标签: mysql database performance