left join 为何就是这么慢啊 都是10w 当量的表

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 (.....);

看下执行计划,有没有走索引,mysql,10w数据肯定没有这么慢。