我想执行一个select查询,它返回数据库中的大量数据。所述数据库迫使我将我的查询拆分为10000个结果的块,其中包含偏移量+限制。当我迭代这些块时,其他人更新数据库,这在某些情况下可能使db多次返回同一行。我通过后处理过滤器处理它,删除具有重复ID的行,但我想知道是否有一种方法可以构建一组sql查询,这些查询允许我跨多个select语句获取数据库的连贯视图。即BEGIN + COMMIT但是选择。
我是否提到我不是一个sql人?
答案 0 :(得分:1)
你能否:
按ID订购,获得前10000,获得最后的ID。
第二次过滤大于最后一个id,获得下一个10000。
在完成之前一直这样做
Select top(10000) * from Table order by id
获取最后一个ID
Select top(10000) * from Table where id> LAST order by id
当然最后用数字代替
非常低级别,但应该解决问题并消除重复