0

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

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

有没有办法限制缓存QSqlQuery

4

1 回答 1

1

为什么不自己储存previous呢?有一个QContiguousCache似乎很适合这个。

于 2012-08-21T14:44:19.600 回答