betterNing_Z 2019-06-23 20:22 采纳率: 0%
浏览 806

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多秒还没有查询出来!!
真给我跪了啊!

求大神指点!!!感激不尽!

  • 写回答

2条回答

  • huxin889 2019-06-23 22:08
    关注

    数据量太大分批吧,这么大的数据量查到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 (.....);

    评论

报告相同问题?

悬赏问题

  • ¥30 matlab解优化问题代码
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?
  • ¥15 Jenkins+k8s部署slave节点offline