日期:2014-05-17  浏览次数:20920 次

多线程怎么查数据库提高效率啊,球版主
如果利用多线程,返回SqlDataReader   对象,有用么,怎么分开一起查询呢

提高效率的办法,其他的也行,数据有几十万个

------解决方案--------------------
SqlDataReader是独占连接且只读的,效率很高
你可以将要查询的数据按照规则(比如把主键分成若干区间)拆分成多个,然后用多个线程查询,不过数据库连接池的默认连接数比较有限,一般很少这么弄
尽量用缓存
------解决方案--------------------
如果要提高查询性能 使用多线程查询反而效率更低 除非你为每个线程使用单独的连接池(or连接串) 就算弄好了 也要考虑数据合并问题 有没有重复数据

这些都很麻烦 建议查询那些实时性不高的数据时使用缓存(cache)
查询实时性很高的数据 尽量优化SQL查询语句 设计好表的索引等 就算超大的数据表速度也不会很慢
SQL内部的查询应该也是使用了并行化处理 充分运用CPU 它查询数据比LINQ快非常多