【问题标题】:Dot net application unable to handle more 5000 records点网应用程序无法处理超过 5000 条记录
【发布时间】:2012-01-09 11:57:08
【问题描述】:

我们正在开发一个 .net 桌面应用程序。在 GUI 上,有许多选项卡和面板。图表选项卡、图像选项卡、结果网格选项卡等。任务是获取大约 50,000 条记录并能够获取不同的视图。例如,可以有两列之间的图表,可以通过网格中的结果并可以查看记录的图像。

应用程序已开发,但性能太差。我们正在尝试将它定位到至少 50,000 条记录,但它的响应在大约 5000 条记录上变得很奇怪。

事实:

1- 查询很复杂,其中包括连接数。平均 10 到 12 个表连接。有时子查询表作为连接。返回结果大约需要 8 到 10 秒。 可以做些什么来达到这个级别的性能。 - 正确使用索引。

能否在上下文中使用 SSIS(Sql Server 集成服务)帮助?

2- 图表支持的数据量非常少,并且开始在大约 4000 条记录上得到扩展。可以做些什么来提高图形的性能?

涉及图表时不能使用分页。

【问题讨论】:

  • 您能发布表架构和示例查询吗?
  • 您是否使用存储过程来执行复杂的查询、表连接和数据处理,以便您的 .NET 应用程序只需要调用它?
  • 如果从 SSMS 或 sqlcmd 之类的东西中检索行需要 8 到 10 秒,那么您可以预期 SSIS 需要类似的时间范围来返回数据。相反,我会专注于改进您的查询并可能重组您的表。

标签: performance optimization graph ssis


【解决方案1】:

请发布您的架构和示例查询,以便对其进行改进。

至于图形性能,这里有一些通用的性能提示(假设是 WinForms):

图形对象是否有.BeginUpdate().BeginDataUpdate() 以及对应的.EndUpdate() / .EndDataUpdate() 方法?如果它有这些,那么你应该使用它。这同样适用于 GridControl。

您是将项目一一添加到图形/网格(或其数据源),还是调用.AddRange() 或设置data source / data bindings。如果您要逐个添加项目,那么它通常会一遍又一遍地重新制作列表,这是 .NET 1.1 ListView 控件的常见问题,因为下面的项目存储在一个数组中并且每个 @ 987654329@ 调用重新创建了数组,因此它很快就转到了O(n^2) 以添加项目。

您使用的是什么图形和网格控件?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    相关资源
    最近更新 更多