最近遇到一个问题,使用DB Tools操作ACCESS数据库的时候,发现在查询大量数据的时候,程序内存暴增,然后每查询一次都会有所增加,但把查询相关的程序关闭了,只要不退出LV,内存就不释放。
这时我用的查询语句是:SELECT C1,C2,C3.. FROM Table where ...,根据查询条件,有时会一次返回上万条数据,当查询结果中包括30列,2万多条记录时,内存要增加300MB左右。
后来,搜索相关问题,得知可以通过查询数据分页的方式把一次查询分成多个子查询然后再拼接起来,强哥在一个帖子里回答说用LIMIT来限制每次返回的记录数,但ACCESS不支持这个指令,只能用繁琐的top语句来替代。
这时,我用的查询语句是:SELECT TOP 1000 C1,C2,C3... FROM Table where ...,根据返回记录数是否小于1000(假如设定每次返回1000条),来判定是否查询结束,内存问题有所改善,返回30列,2万多条记录时,内存增加100MB左右。
但仍然不能彻底解决问题。