.net datatable 查找一行时的方法比较datatable.rows.find vs datable.select vs dataview vs for loop

1 篇文章 0 订阅
1 篇文章 0 订阅

在.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快一到两个数量级




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值