【发布时间】:2014-08-21 09:46:01
【问题描述】:
我通过查询大型 mysql 数据库生成了一个数据表。 这导致了大约 7000 行。现在我想添加一个列,计算列“BREAK2”中每个唯一值的“QUANTITY”列的总和(如“分组依据”)。
例子:
BREAK2 | QUANTITY | COMPUTED
A 10 30
B 20 40
A 10 30
A 20 30
B 20 40
如果我使用
Dim dc As DataColumn = New DataColumn
dc.DataType = System.Type.GetType("System.Double")
dc.ColumnName = "SumQTY"
dt.Columns.Add(dc)
For Each dr As DataRow In DT.Rows
dr("SumQTY") = DT.Compute("Sum(QUANTITY)", "BREAK2 = '" & dr("BREAK2") & "'")
Next
这需要很长时间(在我中断之前几分钟)。
当我使用名为 BRIO 的查询工具查询相同的数据,并使用公式“Sum(QUANTITY,BREAK2)”添加计算列时,大约需要 1 秒才能得到结果。
这些方法之间可能有什么区别?
为什么 VB.net 代码需要这么长时间?
我曾尝试使用 LINQ,但性能同样不佳。
谢谢。 纳斯
【问题讨论】:
-
只是一个提示:如果你有 2000 行的列 BREAK2='A' 你调用 Compute 2000 次以获得相同的结果。
-
您应该只使用 SQL 来获取该数据。如果您愿意,您可以使用聚合值生成一个结果集,然后将其加入您已有的结果集。