当您的语句(甚至不是事务)完成时,所有索引都是最新的。提交时,所有更改都将成为永久更改,所有锁都将被释放。否则不算“聪明”,反而会侵犯诚信,可能造成错误。
编辑:我所说的“完整性”是指:一旦提交,任何人都应该可以立即获得数据。如果此时索引不是最新的,可能会有人得到错误的结果。
当您增加批处理大小时,您的性能最初会提高,然后会减慢。您需要运行自己的基准测试并找出最佳批量大小。类似地,您需要进行基准测试,以确定删除/重新创建索引是否更快。
CREATE TABLE dbo.Num(n INT NOT NULL PRIMARY KEY);
GO
INSERT INTO dbo.Num(n)
SELECT 0
UNION ALL
SELECT 1;
GO
-- 0 updates to 1, 1 updates to 0
UPDATE dbo.Num SET n = 1-n;
GO
-- doing it row by row would fail no matter how you do it
UPDATE dbo.Num SET n = 1-n WHERE n=0;
UPDATE dbo.Num SET n = 1-n WHERE n=1;