我正在将大约 350 行(带有一些数据收集)从 MS SQL Server 传输到 iSeries 进行处理。我觉得这个过程太慢了,大约一分钟左右。我在 LINQ2SQL 中完成所有 MS SQL 的工作。这是我目前正在做的事情的基础:
- 收集所有车辆主数据以一次处理一个。
- SUM() 车辆燃料使用量
- SUM() 机油用量
- SUM() 车辆使用的零件
- SUM() 车辆人工
- SUM() 外部车辆维修
- SUM() 车辆事故成本
我意识到这是很多查询,但其中大部分来自 MS SQL Server 中的不同表。所有这些至少需要一个连接。我正在考虑将 Oil and Parts 加入到一个查询中,将 Outside Repairs and Accident Costs 加入到一个查询中,因为这两者都存储在同一个表中,看看是否可以提高性能。
您还有什么建议吗?
请注意,这是供应商交付的产品,我宁愿不创建数据库中尚不存在的任何存储过程或 View (基本上没有)。
更新:我有 another post寻找提高速度的替代方案。
最佳答案
您或许可以将这些查询启动到单独的线程中并等待它们返回?然后,您的所有计算将在大约相同的时间内完成,比方说,我猜现在需要的时间是现在的一半。
在我看来,将每个表的结果分组是一个好主意,因为您已经在处理这些数据。
按表对查询进行分组并将它们启动到不同的线程中肯定会提高性能。这完全取决于这是否最适合您的情况。
关于c# - 使用 LINQ 加速查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2410466/