在.net 中,从datatable里查找一行有四种实现方法,但是哪种性能最高呢?
经过对一个2万行的表的实验比较如下:
1,datatable.rows.find
这种方法是最高效的方法。在实验表的规模下,所需时间(ticks)是0。
但是这种方法只能查询主健列。
2,datable.select
这种方法是最耗时的。在实验表的规模下,所需时间(ticks)是800,000左右。
这种唯一的优点是写法简单。
3,dataview
这种方法相对比较高效。在实验表的规模下,所需时间(ticks)是90,000左右。
4,对datable for loop循环
看起来最原始的思路,比较麻烦的写法,但有着相当不错的性能。
所需时间(ticks)是0-70,000。时间随所查找的行所在的位置不同而呈近线性变化。
结论,
如果是查找单行,
如果是根据主健查找rows.find,否则for loop
如果是查找多行,
用dataview ;忘记datable.select吧。
--------------------------------------------------------------
20150717更新,
新换了实现表,二百万行数据,有组合主键.
对比dataview 与select 在有部分主键的情况下的查找多行比较
结果居然是完全不同,select 几乎总是比dataview快一到两个数量级