我尝试通过计算另一个表中的行来更新一个表
UPDATE t1 SET c1 = (
SELECT COUNT(*) FROM t2 WHERE t2.id=t1.id GROUP BY id
)
奇怪的是,这个查询停留在Sending data
状态好几个小时。
SELECT COUNT(*) FROM t2
在 2 秒内返回 ~16M。
SELECT id FROM t2 GROUP BY id
在 5 秒内返回 50K 行。
表结构非常简单
CREATE TABLE t2
(
item int(11) unsigned NOT NULL,
id mediumint(7) unsigned NOT NULL,
PRIMARY KEY (item,id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci
删除相关性:
t2
没有有用的索引。它需要INDEX(id)
大大提高速度。如果您已经淡化了表格和查询,那么这个答案可能还不够。