我正在使用一个QSqlQuery
对象对 1000 万行 SQL 表进行线性遍历,该表具有非常复杂的 6 列主键并按排序顺序排列。由于密钥(我无法更改),SELECT * FROM table1
使用<
或>
使用中断我的查询LIMIT
会导致我正在使用的算法出现大量问题。
我出现的问题如下,无论出于何种原因,QSqlQuery
似乎都将整个结果集缓存在内存中,直到它遇到错误的分配并杀死应用程序。所以我可能会读取几百行,seek()
超过几十万行,此时QSqlQuery
正在使用 300mb 的内存,我的应用程序死掉了。我阅读了文档,似乎唯一可以做的就是使用setForwardOnly()
,但是我经常需要previous()
(这就是为什么用 LIMIT 分解查询是一个 PITA)
有没有办法限制缓存QSqlQuery
?