我尝试使用以下语句从第二个表中填充一个表中的一些缺失数据(XX 和 YY 设置为整数值。
update ignore sub, user set sub.username=user.username
where sub.id>=XX and sub.id<YY and user.id=sub.user_id
and sub.status>0 and sub.username is null
sub 根据 id 建立索引 用户根据 id 建立索引
这对于子表中存在相应用户值的部分来说效果很好,但当找不到用户值时就会开始超时。为什么 mysql 会出现这个问题?有没有更好的方法来实现这一点?
最佳答案
您可能缺少子表中 user_id 字段的索引。
像这样添加索引:
ALTER TABLE `sub`
ADD INDEX (`user_id`);
如果查询仍然很慢,请运行此命令并发布结果:
EXPLAIN SELECT *
FROM
`sub`,
`user`
WHERE
`sub`.`id` >= XX
AND `sub`.`id` < YY
AND `user`.`id` = `sub`.`user_id`
AND `sub`.`status` > 0
AND `sub`.`username` IS NULL
;
关于mysql - 两个表mysql更新语句超时-我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20547823/