Оле*_*ров 5 c# sql-server datareader
我有这样的想法(不知道好坏)。我有实用程序,它通过 reglament 连接到 SQL Server 并将一些数据获取到应用程序。数据很简单(2 个 varchar 文本属性),但数据数量约为 300 万行。因此,我的应用程序非常频繁地使用网络。我可以通过编程方式减少(限制、节流等)SQL 的网络带宽使用吗DataReader
?让它运行得更慢,但不要给服务器和客户端带来压力。这个主意好不好?如果没有,我必须做什么?
到目前为止,这是代码:
using (SqlConnection con = new SqlConnection("My connection string here"))
{
con.Open();
using (SqlCommand command = new SqlCommand(query, con))
{
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
yield return new MyDBObject()
{
Date = (DateTime)reader["close_date"],
JsonResult = (string)reader["json_result"]
};
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
使服务器缓冲数据或保持打开查询的时间更长实际上可能会显着增加服务器上的负载,但最终执行您要做的事情的唯一方法是将“分页”应用于查询,并连续访问数据页面,页面之间可能有停顿。页面可能仍然很大 - 例如 100k。您可以在 SQL Server 中使用OFFSET
/相对轻松地实现此目的FETCH
。