无人回复时可自行删除
http://topic.csdn.net/u/20080926/12/ebb4d7cc-6278-4886-be01-52bb28924314.html

解决方案 »

  1.   

    那就毫不客气的jf~当Update涉及到索引键时,维护索引都是用delete+insert.可以用DBCC LOG测试一下.
      

  2.   

    谢谢Garnett_KG ,应该聚集索引吧,这是一种情况,
    还有别的吗?
      

  3.   

    非聚集索引也一样.
    CREATE TABLE t(Id int primary key,name varchar(10),c2 int)
    GO
    CREATE INDEX ix_Name ON t(name)
    GO
    INSERT INTO t VALUES (1,'aaa',1)
    GOUPDATE t SET name='ccc' WHERE ID =1 
    --执行後,聚集索引上的数据会更新(只有UPDATE),但ix_Name索引上的数据会DELETE后再INSERT.
    UPDATE t SET name='ccc' WHERE ID =1 
    --再次执行这条语句,则不会记录任何日志,因为2005够聪明,知道这条语句没有异动任何数据.UPDATE t SET C2=3 WHERE ID =1 
    --执行後,聚集索引上的数据会更新(只有UPDATE).UPDATE t SET ID=3 WHERE ID =1 
    --执行後,聚集索引上的数据更新(UPDATE+DELETE), ix_Name索引上的数据也会更新(UPDATE+DELETE)UPDATE t SET ID=3 WHERE ID =3
    --执行後,聚集索引上的数据更新(UPDATE+DELETE), ix_Name索引上的数据也会更新(UPDATE+DELETE)
      

  4.   


    手误,上面的(UPDATE+DELETE) ,应该是(DELETE+INSERT)
      

  5.   

    thanks,
    我找了些资料,明白了