SELECT
b.id
FROM
t_a a
LEFT JOIN t_user b ON a.user_name = b.loginname
查询 巨慢 都是10w 级别的表
做数据迁移
把原来的业务表 t_a 表中存的 a.user_name 更新成t_user 中的id
600多秒还没有查询出来!!
真给我跪了啊!
求大神指点!!!感激不尽!
SELECT
b.id
FROM
t_a a
LEFT JOIN t_user b ON a.user_name = b.loginname
查询 巨慢 都是10w 级别的表
做数据迁移
把原来的业务表 t_a 表中存的 a.user_name 更新成t_user 中的id
600多秒还没有查询出来!!
真给我跪了啊!
求大神指点!!!感激不尽!
数据量太大分批吧,这么大的数据量查到JVM里也是一笔不小一开支啊
1.对A表进行备分以便出了问题之后回滚
2.给A表加一个字段用以区分该条记录是否已经更新
alter table t_a add column udate_tag tinyint default 0;
3.使用多线程进行批量查询,批量更新
SELECT
a.id,
b.id
FROM
t_a a
LEFT JOIN t_user b ON a.user_name = b.loginname limit 0, 500
update t_a a set a.valid_tag =1 where t_a.id in (.....);