我正在使用QSqlQuery
对象按行排序,对一个1000万行SQL表进行线性遍历,其中包含一个非常复杂的6列主键。由于密钥(我无法更改),使用SELECT * FROM table1
或<
与>
分解查询LIMIT
会导致算法出现大量问题我是使用
我出现的问题如下,无论出于何种原因,QSqlQuery
似乎都是在内存中缓存整个结果集,直到遇到错误的alloc并杀死应用程序。所以我可能会阅读几百行,seek()
超过几十万,到此为止QSqlQuery
正在使用300mb的内存,我的应用程序就死了。我阅读了文档,似乎唯一可以做的就是使用setForwardOnly()
,但我经常需要previous()
(这就是为什么用LIMIT打破查询是PITA)< / p>
是否无法限制QSqlQuery
的缓存?
答案 0 :(得分:1)
为什么不自己存储previous
?有一个QContiguousCache
似乎是理想的。