如何在sql表中的所有行中获取批处理?

时间:2009-04-03 09:22:30

标签: sql-server batch-processing row-number

我有一张4000万行的表。
我想一次拿起大约200万并“处理”它们 为什么呢?
Cos处理处理1000万行+会降低性能,并且经常会超时。 (我需要这个独立于数据大小的工作,所以我不能继续增加超时限制。)
另外,我正在使用SQL Server。

1 个答案:

答案 0 :(得分:1)

是否有增加的密钥,例如身份密钥?它是聚集索引吗?如果是这样,跟踪你得到的最后一个键应该相当简单,并执行以下操作:

SELECT TOP 1000000 *
FROM [MyTable]
WHERE [Id] > @LastId
ORDER BY [Id]

另外 - 请务必使用类似ExecuteReader的内容进行阅读,这样就不会缓冲太多行。

当然,除了几千行之外,您还可以接受偶尔的往返行程,并一次向(例如)10000行请求。我不认为这在实际上会有任何效率(在这里和那里几毫秒)。