Einzelnen Beitrag anzeigen

jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#22

AW: Ergebnismenge beschränken mit "LIMIT" oder "TOP"

  Alt 20. Feb 2018, 20:45
Dafür ist mein SQL nicht gut genug, ich verstehe kein bisschen.
Damit bekommst Du in jeder Rückbadezeile die Anzahl der Gesamtdatensätze als zusätzliche Spalte. Brauchst Du nicht.

Wenn ein count(*) schon zu lange dauert (mit einer entsprechend komplexen Bedingung), dann sind andere Sachen angesagt.

1. SQLite ist verbreitet, aber nicht unbedingt schnell
2. langsames SQL ist gern ein Indikator für unpassende Indizierung
3. aus 1 folgt, dass man vielleicht nach Alternativen schaut, unangenehm, aus 2 folgt: viel angenehmer, weil ggF. mit ein paar Handgriffen erledigt.
4. langsames SQL kann auch an einigen oder wenigen oder vielen "OR" Kriterien in der Bedingung liegen, in dem Fall ergibt es dann oft mehere "Fullscans", besonders schlecht bei großen Datenmengen, Singlepass und mitzählen ist dann schneller (was immer das auch erstmal für Dich bedeutet)
5. das alles ruft nach einem Blick auf den Ausführungsplan der Query
6. Leute, die eine "komplexe Bedingung" nicht zeigen (wollen), haben vielleicht was zu verbergen
7. ein Queryplan liefert immerhin brauchbare Indizien zu 1.-5., ohne all zu viel über Feldnamen usw. zu verraten
8. ein Queryplan kann man leichter "schminken", als eine komplexe Query
9. hier gibt Anleitung zu Query Plan: https://www.sqlite.org/eqp.html

Wenn Du Dich auf die ein oder andere Art mit Deiner komplexen Bedingung hier outest, kann Dir vielleicht geholfen werden.
Gruß, Jo
  Mit Zitat antworten Zitat