我正在vb.net 2005中编写一个应用程序。该应用程序使用ADO.NET将电子表格读入DataSet,并使用该表的列填充ListBox。选择列表框项目后,将向用户显示所选记录的详细信息。
此信息的一部分不在DataSet中。我必须将电子表格中的一列与几个外部数据源进行比较,以确定相关记录的性质。这就是我遇到问题的地方。
此比较必须在一个阶段中搜索SQL表中的9.5m行。我已经检查过,因为我只搜索绝对必要的数据,所以无法“缩小”查询。
应用程序从未明显做任何事情。无论事先的情况如何,CPU使用率都高达100%,系统的性能几乎无法忍受。
当这个大规模的查询正在运行时,有人可以提出一种方法可以改善这种情况吗?
编辑:我原本打算将数据库表中9.5m行的内容写入一个文本文件,然后我将其读取,但是在6.5m行之后,我得到了一个OutOfMemoryException。
答案 0 :(得分:3)
我怀疑您的CPU可能会用于填充DataSet
,但您必须分析您的应用程序以确认。尝试使用DataReader
代替,并将结果以更紧凑的格式存储在内存中,或者,如果内存不足,则将它们写入文件中。使用DataReader
方法,您永远不需要将整个结果集同时存储在内存中。
答案 1 :(得分:0)