1

我开发了一个应用程序来处理数据库中的数据。当我从我的 PC 或我附近的 PC(在我的公司,同一台服务器)上运行该应用程序时,它工作正常,但是当来自同一公司但另一台服务器(另一个国家/地区)的人试图做同样的事情时,他有巨大的 LAG .

我知道查询有点“太多”:

SqlCommand command = new SqlCommand("SELECT * FROM dbo.Person", con)

更多数据 -> 更多滞后

但我有点需要数据库中的所有数据来填充 ListView 然后导出到 Excel 文档。

我尝试过的事情:

我创建了一个将执行此命令的后台工作人员,当工作人员完成时,我使用如下数据填充 ListView:

private void ViewAllWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)    
{   
    while (Oreader.Read())
    {

        ListViewItem item = new ListViewItem(Oreader["ID"].ToString());

        item.SubItems.Add(Oreader["DecadeOfBirth"].ToString());
        // etc
    }
}

在这种情况下你会怎么做?什么可以帮助减少延迟?什么是正确的方法?

4

2 回答 2

1

解决此问题的唯一正确方法是减少您带回给用户的数据量。

让我给你举个例子:

  • 您的表包含许多需要导出的行
  • 用户想要预览数据,然后将其导出到 Excel
  • 允许用户查看部分数据
    • 前 N 条记录
    • 过滤器(按用户名、部门、​​日期等)
    • 分页(跳过,采取)
  • 用户对她所看到的感到满意,然后想要导出所有数据
  • 你在服务器上运行它,然后给用户一些进度反馈
于 2016-05-23T08:55:12.787 回答
0

如果您的应用程序基于IIS(如ASP.NET),您可以使用Application Object并在应用程序启动时保存表“Person”中的所有数据。

于 2016-05-23T09:13:26.970 回答