C#SQL查询滞后

时间:2016-05-23 08:40:24

标签: c# sql performance sql-manager

我开发了一个操作数据库数据的应用程序。当我从我的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
    }
}

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

2 个答案:

答案 0 :(得分:1)

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

让我举个例子:

  • 您的表包含许多需要导出的行
  • 用户想要预览数据,然后将其导出到Excel
  • 允许用户查看部分数据
    • 前N名记录
    • 过滤器(按用户名,部门,日期等)
    • 分页(跳过,拿走)
  • 用户对所看到的内容感到满意,然后想要导出所有数据
  • 您在服务器上运行此功能,并向用户提供一些进度反馈

答案 1 :(得分:0)

如果您的应用程序基于 IIS (例如 ASP.NET ),您可以使用Application Object并保存表'Person'中的所有数据申请开始了。