0

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

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

我试过了,DataReader但还是不够快。

4

3 回答 3

3

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

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

您可以通过在机器上本地运行查询来找出答案,并查看需要多长时间。如果带宽是您的限制,那么您真正可以尝试的只是删除您实际上不需要的列(不要这样做select *)。或者为您和服务器之间的更粗的管道付费。在某些情况下,在本地查询数据并以某种压缩形式返回数据可能会有所帮助 - 但您实际上是在谈论诸如 Web 服务之类的东西,它还有其他带宽考虑因素。

不过,更有可能的是,问题在于查询本身。通常情况下,例如:

  • 编写明智的 tsql
  • 添加适当的索引
  • 避免游标、复杂的处理等
于 2012-11-06T14:25:43.013 回答
0

您可能想要实现需要知道的基础方法。只拉下需要的第一块数据,然后在需要下一组数据时,拉下这些行。

于 2012-11-06T14:22:54.977 回答
0

可能是您的查询太慢而不是流式处理。您应该向我们展示您的 sql 查询,然后我们可以帮助您改进它。

假设您想从表中获取所有 100000 条记录,您可以使用 aSqlDataAdapter填充 aDataTable或 aSqlDataReader填充 a 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);
}
于 2012-11-06T14:29:20.837 回答