UPDATE TableName SET F1 = V1 WHERE Id = 1 

UPDATE TableName SET F1 = V1, F2 = V2, F3 = V3, F4 = V4, F5 = V5, ..., Fn = Vn  WHERE Id = 1 这两个语句, 在效益上是否有区别?
注: 我个人觉得UPDATE 其实就是一个DELETE + INSERT, 所以没有区别.

解决方案 »

  1.   

    update 更新操作有两种可能的处理方式:就地更新,适用于不需要移动行的更新;删除-插入更新,适用于需要移动行的更新,此类更新也有可能导致分页。如果 update 语句所操作的行所在的页面插槽中有足够的空间,则不会移动行,只会在原位置修改数据。如果 update 语句所操作的行所在的页面插槽中没有足够的空间,或者更新了聚集索引表的主键,这样便会导致行移动,也就是执行“删除-插入”,另外还可能会导致“分页”。
      

  2.   

    我的问题可能没表述清楚.
    如果一个表有N个栏位, 其中只有一个栏位需更新值,我写成
    UPDATE TableName SET F1 = newValue WHERE Id = 1与
    UPDATE TableName SET F1 = newValue, F2 = F2_OleValue...... Fn = Fn_OldValue WHERE Id = 1有无区别因为我看到一个示例, 是将所所对Table的Insert,Update, Delete写在一个存储过程中, 他的Update语句就是对Table中的每个栏位都重新赋值. 所以我想知道在效益上有没有区别.