update1个字段与多个字段是否有效率差别?

解决方案 »

  1.   

    效率应该和你的条件语句内容也有部分关系!
    例如:
    UPDATE TestTB
    SET Col0='XXXX-XX-XX'
    WHERE CONVERT(VARCHAR(10),Col0,120) LIKE 'YYYY-YY-YY%'UPDATE TestTB
    SET Col0='XXXX-XX-XX',Col1='AAAA',Col2='BBBB',Col3='CCCC'
    WHERE Col0>=CAST('YYYY-YY-YY' AS DATETIME) AND Col0<=DATEADD(DD,1,CAST('YYYY-YY-YY' AS DATETIME))后者虽然比前者多更新了3列,但是当数据量很大的时候,后者比前者要高校!未亲测,我是从书上看来的。
      

  2.   

    首先说楼主的问题:
    update 一个字段与update 三个字段.
    因为要这里因为操作量都不一样,io操作量就有了区别,所以同样的情况下(除了更新字段个数不一样外,其它都一样),绝对是update一个字段快。再说3楼的示意
    每一个语句对col0进行了计算,第二个语句,没有对col0进行计算,而是对待匹配的值进行了计算,在查询时,那么第一个语句在col0建有索引的时候无法利用索引,要表描扫,增加了io操作。而第二个就可以利用索引.
    接下来,如果col0,col1,col2均建有索引,需知索引在列update时需要修改的,第二个语句也就多了索引修改的操作。至于1,2哪个快要看具体情况了。
    1是在取数时增加了io,2是在写数是增加了io
      

  3.   


    查看语句执行时间:
      set statistics time on