【发布时间】:2015-05-05 11:15:35
【问题描述】:
我一直在尝试通过向表中添加主键来使用DataTable.Select 来提高性能,但仅 1200 行仍然需要太多时间。有主键和没有主键的时间差只有 3-4 秒(DataTable.Select)。
现在,据我所知,Linq 的性能肯定不受主键添加的影响。由于创建了 Datarow 集合数组,我猜这对我来说性能毫无用处。
那么主键到底有什么用呢?
【问题讨论】:
-
它或多或少是与DataTable后面的后端数据库相关的东西。对于纯本地数据,pk 只会对合并等某些事情有所帮助。这种比较背后的原因是什么?在不了解更多细节的情况下,使用没有后端的 DataTable 似乎是个糟糕的选择。
-
@Ralf -
a pk would only be helpfull with certain things like merging合并什么?你可以解释吗。我的目的是在一个循环中选择 200-300 行。因此,我希望选择速度快。 -
我不确定,但我认为 PK 是一个约束,不会创建索引。
-
我的意思是像 DataTable.Merge 这样的函数,例如,它使用 PK 来匹配要合并的 2 个数据表之间的行。
-
@PaoloCosta 我也这么认为,甚至发布了一个较早的错误答案,但实际上,事实证明 PK 确实在内部创建了一个索引,并且可以使用该索引。