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.