hyosen521 2015-10-22 00:46 采纳率: 0%
浏览 1586
已结题

请教高手如何优化下面oracle语句,19W条数据花了几个小时

update agz set fa_id=(select B from B123 where a=agz.old_fa_id);
commit;
update agz set person_id=(select ry.id from dm_gy_ry ry where ry.sfzjhm=agz.ry_sfz and ry.yxbz='Y' and rownum=1);
commit;
update agz set person_depart=(select ry.jg_id from dm_gy_ry ry where ry.id=agz.person_id);
commit;
update agz set pperson_dw=(select jg.dw_id from dm_gy_jg jg where jg.id=agz.person_depart);
commit;
update agz set shs=( select fa.fk_px_ss_chs_id from t_px_ss_fa fa where fa.c_id=agz.fa_id);
commit;

  • 写回答

5条回答 默认 最新

  • 诸相非相 2015-10-22 01:48
    关注

    通常不需要用子查询。拿第一个sql来说,调整成下面这样

     update agz,B123 set fa_id=B where a=agz.old_fa_id;
    

    其他sql类似方式把子查询"解放"出来。
    当然这样还不够,要确保where条件可以用上合适的索引。
    还拿第一个sql来说,如果agz.old_fa_id或者B123.a上有索引的话,执行调整后的sql效率会提高。

    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退