最快从远程服务器获取数据

时间:2012-11-06 14:20:43

标签: c# .net sql performance ado.net

我正在创建一个Windows应用程序,我需要使用ado.net/(或者任何其他方式使用C#,如果有的话)获取数据。从一张桌子。数据库表显然有大约100000个记录,下载需要永远。

有没有更快的方法让我可以更快地获取数据?

我尝试了DataReader,但仍然不够快。

3 个答案:

答案 0 :(得分:3)

数据阅读器API是您可以做的最直接的。重要的是时间在哪里?

  • 是传输数据的带宽吗?
  • 还是基本查询?

您可以在计算机上本地运行查询,并查看需要多长时间。如果带宽是您的限制,那么您真正尝试的就是删除您实际不需要的列(不要select *)。或者支付你和服务器之间更胖的管道费用。在某些情况下,在本地查询数据,并以某种压缩形式返回它可能会有所帮助 - 但是你真的在谈论像Web服务这样的东西,它有其他带宽考虑因素。 / p>

但更有可能的是,问题在于查询本身。通常,例如:

  • 写明智的tsql
  • 添加适当的索引
  • 避免游标,复杂处理等

答案 1 :(得分:0)

您可能希望实现需要了解基础方法。只需下拉所需的第一块数据,然后在需要下一组时,拉出这些行。

答案 2 :(得分:0)

这可能是你的查询速度太快而不是流媒体进程。您应该向我们展示您的SQL查询,然后我们可以帮助您改进它。

假设您想要从您的表中获取所有100000条记录,您可以使用SqlDataAdapter填充DataTableSqlDataReader来填充List<YourCustomClass>

DataTable方法(因为我不知道你的字段很难展示课程):

var table = new DataTable();
const string sql = "SELECT * FROM dbo.YourTable ORDER BY SomeColumn";
using(var con = new SqlConnection(Properties.Settings.Default.ConnectionString))
using(var da  = new SqlDataAdapter(sql, con))
{
    da.Fill(table);
}