Performance für QTableView für 1 Mio. Datensätze
Verfasst: 3. Juni 2008 13:16
Hallo zusammen,
plane gerade eine Applikation und die Entscheidung muß zwischen PHP/MySQL auf Webserver oder Windows-Applikation fallen.
Es geht um eine Tabelle mit größenordnungsmäßig 1 Mio. Einträgen in einer Datenbank.
Hat jemand Erfahrungen mit einem QTableView, an dem ein QSqlQueryModel mit so vielen Einträgen hängt. Was sagt die Performance? Ist das dann noch benutzbar? Ich möchte sowie implementieren wie
- "Doppelklick auf einer Zeile" => Editierfenster geht auf für diesen Eintrag.
- STRG+Ende springt zum letzten Datensatz
- STRG+Pos1 zum ersten Datensatz
Meine erste Erfahrung war ehrlich gesagt schon negativ: 500 Test-Einträge.
Drücken von STRG+Ende springt ca. auf Datensatz 300 statt 500. Grund offensichtlich: Es wird im Hintergrund langsam successive alles ausgelesen. Wenn das noch nicht vollständig geschehen ist, geht der Tableview wohl von der aktuellen Anzahl der Zeilen als der endgültigen aus.
Als Workaround habe ich im Konstruktor einfach folgendes gemacht.
- Erst die Anzahl der Elemente ermitteln, dann auf Anzahl-1 springen, dann auf die 0. Damit zwinge ich den Tableview zum vollständigen Laden sofort.
Geht bei 500 Datensätze, aber bei einer Million kann ich mir das nicht mehr wirklich vorstellen in zumutbarer Geschwindigkeit.
Also: wie sieht es mit der Performance aus? Gibt es vielleicht ein grundsätzlich anderes Konzept, sowas zu implementieren?
Gruß aus Berlin, Gérôme
plane gerade eine Applikation und die Entscheidung muß zwischen PHP/MySQL auf Webserver oder Windows-Applikation fallen.
Es geht um eine Tabelle mit größenordnungsmäßig 1 Mio. Einträgen in einer Datenbank.
Hat jemand Erfahrungen mit einem QTableView, an dem ein QSqlQueryModel mit so vielen Einträgen hängt. Was sagt die Performance? Ist das dann noch benutzbar? Ich möchte sowie implementieren wie
- "Doppelklick auf einer Zeile" => Editierfenster geht auf für diesen Eintrag.
- STRG+Ende springt zum letzten Datensatz
- STRG+Pos1 zum ersten Datensatz
Meine erste Erfahrung war ehrlich gesagt schon negativ: 500 Test-Einträge.
Drücken von STRG+Ende springt ca. auf Datensatz 300 statt 500. Grund offensichtlich: Es wird im Hintergrund langsam successive alles ausgelesen. Wenn das noch nicht vollständig geschehen ist, geht der Tableview wohl von der aktuellen Anzahl der Zeilen als der endgültigen aus.
Als Workaround habe ich im Konstruktor einfach folgendes gemacht.
- Erst die Anzahl der Elemente ermitteln, dann auf Anzahl-1 springen, dann auf die 0. Damit zwinge ich den Tableview zum vollständigen Laden sofort.
Geht bei 500 Datensätze, aber bei einer Million kann ich mir das nicht mehr wirklich vorstellen in zumutbarer Geschwindigkeit.
Also: wie sieht es mit der Performance aus? Gibt es vielleicht ein grundsätzlich anderes Konzept, sowas zu implementieren?
Gruß aus Berlin, Gérôme