QSqlQuery使用数百MB的内存

时间:2012-08-21 14:40:59

标签: c++ sql database performance qt

我正在使用QSqlQuery对象按行排序,对一个1000万行SQL表进行线性遍历,其中包含一个非常复杂的6列主键。由于密钥(我无法更改),使用SELECT * FROM table1<>分解查询LIMIT会导致算法出现大量问题我是使用

我出现的问题如下,无论出于何种原因,QSqlQuery似乎都是在内存中缓存整个结果集,直到遇到错误的alloc并杀死应用程序。所以我可能会阅读几百行,seek()超过几十万,到此为止QSqlQuery正在使用300mb的内存,我的应用程序就死了。我阅读了文档,似乎唯一可以做的就是使用setForwardOnly(),但我经常需要previous()(这就是为什么用LIMIT打破查询是PITA)< / p>

是否无法限制QSqlQuery的缓存?

1 个答案:

答案 0 :(得分:1)

为什么不自己存储previous?有一个QContiguousCache似乎是理想的。