我有一个包含数十亿条记录的表。我想用c# while
循环。我曾经 Offset
以及 Fetch Next
,但要得到结果需要太长时间。如果表中包含的记录数低于10万条,则可以正常工作。批量选择记录的最佳方法是什么?
样本代码
int Count = 500000 // Select Count(id) from table
int OffSet = 1; //Next Time 100000
int FetchNext = 100000; //Next Time 200000
while (OffSet < Count)
{
_strsqlcommand = "Select id from table ORDER BY id OFFSET " + OffSet + " ROWS FETCH NEXT " + FetchNext + " ROWS ONLY"
_sqlCommand = new SqlCommand(_strsqlcommand, _sqlConnection);
_sqlDataReader = _sqlCommand.ExecuteReader();
OffSet += FetchNext;
}
1条答案
按热度按时间xqkwcwgp1#
如果您的id是一个数字,并且您的网络带宽足够好:
首先,找出最大值和最小值
Id
.其次,在where子句中创建一系列数字(对许多记录进行排序是一项高成本的操作)。使用
Where Id > @A and Id<@B
比…快得多fetch next
).使用tpl从数据库中提取数据。