zoukankan      html  css  js  c++  java
  • 批量更新语句合并

    我的基本主张是:如果每次更新的是彼此无关的记录,对一张表连续进行多次update操作还可
    以接受;否则,就应该把它们合并成一个update操作。例如,下面是来自实际应用的一些代码

    update tbo_invoice_extractor
    set pga_status = 0
    where pga_status in (1,3)
    and inv_type = 0;
    update tbo_invoice_extractor
    set rd_status = 0
    where rd_status in (1,3)
    and inv_type = 0;

    两个连续的更新是对同一个表进行的。但它们是否将访问相同的记录呢?不得而知。问题是,
    搜索条件的效率有多高?任何名为type或status的字段,其值的分布通常是杂乱无章的,所以上
    面两个update语句极可能对同一个表连续进行两次完整扫描:一个update有效地利用了索引,而
    第二个update不可避免地进行全表扫描;或者,幸运
    的话,两次update都有效地利用了索引。无论如何,把这两个update合并到一起,几乎不会有损
    失,只会有好处:

    update tbo_invoice_extractor
    set pga_status = (case pga_status
    when 1 then 0
    when 3 then 0
    else pga_status

    end),
    rd_status = (case rd_status
    when 1 then 0
    when 3 then 0
    else rd_status
    end)
    where (pga_status in (1,3)
    or rd_status in (1, 3))
    and inv_type = 0;

  • 相关阅读:
    【编程练习】poj1111
    Android项目开发填坑记-Fragment的onBackPressed
    【编程练习】poj1068
    HTML DOCTYPE文档类型举例说明
    css link import
    css position relative obsolution
    UL/LI
    背离
    stock 当天盘势
    stock 仓位
  • 原文地址:https://www.cnblogs.com/chenli0513/p/1828904.html
Copyright © 2011-2022 走看看