非聚集索引也一样. 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)
还有别的吗?
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)
手误,上面的(UPDATE+DELETE) ,应该是(DELETE+INSERT)
我找了些资料,明白了