sqlserver2008-top新用途2
TOP分块修改数据
TOP的第二个关键改进是支持数据的分块操作。换句话说,避免在一个语句中执行非常大的操作,而把修改分成多个小块,这大大改善了大数据量、大访问量的表的并发性,可以用于大的报表或数据仓库应用程序。此外,分块操作可以避免日志的快速增长,因为前一操作完成后,可能会重用日志空间。如果操作中有事务,已经完成的修改数据已经可以用于查询,而不必等待所有的修改完成。
仍以上表为例:
- while (select count(1) from [Demo_Top])>0
- begin
- delete top (202) from [Demo_Top]
- end
- /*
- (202 row(s) affected)
- (202 row(s) affected)
- (202 row(s) affected)
- (202 row(s) affected)
- (194 row(s) affected)
- */
while (select count(1) from [Demo_Top])>0 begin delete top (202) from [Demo_Top] end /* (202 row(s) affected) (202 row(s) affected) (202 row(s) affected) (202 row(s) affected) (194 row(s) affected) */
注意是每批删除202条数据,TOP也可以用于Select和Update语句,其中后者更为实用。
--Select TOP(100)
--Update TOP(100)