SQLite / Arbeitsspeicher
Verfasst: 15. Oktober 2009 11:48
Hallo,
ich hab mal eine Frage zum ''Speicherverbrauch''. Wenn ich in einer SQLite-Datenbank
viele Datensätze habe(mehere 10000) wie verhält sich das mit dem Speicher bei der
Abfrage der Datensätze:
Werden in der Zeile alle Datensätze
in den Arbeitsspeicher geschrieben oder werden die Datensätze ''einzelnd'' aus
der Datenbank-Datei mit hilfe der ''query.next()''-Methode nachgeladen????
Ich möchte in meinen Programm möglichst ''Speicherschonend'' arbeiten, damit
das Programm auch auf älteren Rechner funktioniert. Und wenn der Speicher
''überläuft'' und diese Daten dann auf die Festplatte ausgelagert werden, wird
das Programm extrem langsam, erstrecht auf alten Rechnern.
Kennt sich jemand damit aus??? thx
RobRoy
ich hab mal eine Frage zum ''Speicherverbrauch''. Wenn ich in einer SQLite-Datenbank
viele Datensätze habe(mehere 10000) wie verhält sich das mit dem Speicher bei der
Abfrage der Datensätze:
Code: Alles auswählen
int CDbInterface::get_all_dealer_where(QString sCondition,QList <CDealer> & lsDealer)
{
if(!m_bIsConnect)
return -1;
int i=-1;
CDealer de;
QString s;
if(sCondition.length()!=0)
{
s=QString("SELECT * FROM dealer WHERE ");
s+=sCondition;//+condition
}
else
s=QString("SELECT * FROM dealer");
QSqlQuery query;
bool b=query.exec(s);
if(b)
{
QSqlRecord record=query.record();
for(;query.next();i++)
{
de.set_id(query.value( record.indexOf("id")).toInt());
de.set_name(query.value( record.indexOf("name")).toString());
de.set_adress(query.value( record.indexOf("adress")).toString());
de.set_callnumber(query.value( record.indexOf("call_numbers")).toString());
de.set_faxnumber(query.value( record.indexOf("fax_numbers")).toString());
de.set_email(query.value( record.indexOf("email_adress")).toString());
de.set_homepage(query.value( record.indexOf("homepage")).toString());
de.set_contectperson(query.value( record.indexOf("contect_person")).toString());
de.set_comment(query.value( record.indexOf("comment")).toString());
de.set_customernumber(query.value( record.indexOf("customer_number")).toString());
lsDealer.push_back(de);
}
i++;
}
return i;
}
Code: Alles auswählen
QSqlRecord record=query.record();in den Arbeitsspeicher geschrieben oder werden die Datensätze ''einzelnd'' aus
der Datenbank-Datei mit hilfe der ''query.next()''-Methode nachgeladen????
Ich möchte in meinen Programm möglichst ''Speicherschonend'' arbeiten, damit
das Programm auch auf älteren Rechner funktioniert. Und wenn der Speicher
''überläuft'' und diese Daten dann auf die Festplatte ausgelagert werden, wird
das Programm extrem langsam, erstrecht auf alten Rechnern.
Kennt sich jemand damit aus??? thx
RobRoy