QSqlQuery缓冲区大小

QSqlQuery缓冲区大小

问题描述:

我在PostgresDB(55GB)中有一个大表。我想用QT在C++中扫描它,总结结果并将其发送回数据库。据我所知,默认情况下,QSqlQuery将所有数据传输到主内存中。是否可以陈述对象的显式缓冲区大小?是否也可以告诉QT/Postgres我希望逐步获得答案,即不是在所有数据被完成后才发送给C++程序?QSqlQuery缓冲区大小

我使用的代码如下:

QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL"); 
db.setHostName("server"); 
db.setDatabaseName("db"); 
db.setUserName("user"); 
db.setPassword("pass"); 
bool ok = db.open(); 

QSqlQuery query; 
query.setForwardOnly(true); 
query.prepare("select attributes veryLargeTable"); 
while (query.next()) { 
    int i = query.value(0).toInt(); // and work with the data 
} 

我在网上看到一个答案最近,但我花了几个小时没有任何成功再次寻找答案。

我会拆分我的选择(当然在交易中)。首先确定iMaxLines大小选择喜欢的:

SELECT COUNT(*) FROM veryLargeTable 

如果我现在想读一次只有1000行广告,我可以做事端这样

SELECT attribute FROM veryLargeTable LIMIT 1000 OFFSET X 

哪里X是可在0迭代,1000 ,2000,...,iMaxLines-1000

此致,Lars