问题是这样的,我最近开发了一个WINCE平台上使用的程序,由于程序中要用到很多数据,目前我使用的是SQLCE的数据库来保存这些数据(记录数大概在10万条左右),但我发现一个问题,因为我需要经常访问这些数据从中查找一些符合要求的部分数据出来。这样访问的效果不是很理想,因为太过占用处理器资源和内存资源了(我每次读取数据库大概在100条数据左右),我将这部分数据读取到内存中然后保存到到一个datatable 中,再在datatble中进行一些相应操作,因为对这些datatable的操作相当频繁(多线程访问,每隔1-2秒就需要比较一次),所以影响了程序的执行效率,所以我的程序目前运行起来非常缓慢。现在的问题是,我想加快程序运行速度,从优化算法的角度考虑,我采取了很多措施,结果效果有限,并不能让我满意。在与我同类的软件中,有一部分软件他们也需要访问和我相同数据量的数据,但他们的处理速度却比我快很多(最少10倍),我不知道他们用的什么格式(或数据结构来存储这些数据),能够达到如此高的效率,和如此低的CPU占用。我希望各位能给我一些意见或建议,小弟感激不尽,微薄分数,不成敬意。
我想过使用其他的数据结构,但想不到有什么数据结果能够比SQLCE效率更高。或者请各位高手指点小弟一下,看常用的数据结构能够保存20万条数据记录,而且查询效率有很高的,常用的数据结构有那些,多谢各位的建议。谢谢。
具体的看下SqlCeCommand的SetRange方法和SqlCeReader的Seek方法
http://msdn.microsoft.com/zh-cn/library/system.data.sqlserverce.sqlcecommand.setrange%28VS.80%29.aspx
瓶颈如果是在datatable查找上面,为什么还要从数据库下手呢?应该考虑优化datatable中搜索的算法啊?毕竟这部分是最频繁执行的。可以考虑将datatable按你需要搜索的内容建一个类似索引的数据结构