オブジェクトを使用してQSqlQuery
、ソートされた順序で非常に複雑な 6 列の主キーを持つ 1000 万行の SQL テーブルの線形ウォークを実行しています。キー (変更できません) のため、クエリSELECT * FROM table1
を分割すると<
、使用しているアルゴリズムで膨大な数>
のLIMIT
問題が発生します。
発生する私の問題は次のとおりです。何らかの理由でQSqlQuery
、結果セット全体がメモリにキャッシュされているように見えますが、それは悪い割り当てに達してアプリケーションを強制終了します。そのため、数百行、数十万行を読み取る可能性がseek()
あり、この時点QSqlQuery
で 300 MB のメモリを使用し、アプリケーションが停止します。私はドキュメントを読みましたが、できることは を使用することだけのようですがsetForwardOnly()
、多くの場合、必要がありますprevious()
(これが、クエリを LIMIT で分割することが PITA である理由です)。
のキャッシュを制限する方法はありませんQSqlQuery
か?