Firebird braucht ewig für Abfrage via Interbase IBSQL
-
Hallo,
habe ein SQL-Statement zur ausgabe der Anzahl von unterschiedlichen PLZ gebastelt, doch leider braucht Firebird dafür viel zu lange... was mache ich falsch???
SELECT Count(DISTINCT F_PLZ) FROM T_ADDRESS;
Danke
-
Hallo
Syntaktisch ist das sicher in Ordnung. Vermutlich solltest du einfach in der Datenbank auf das Feld F_PLZ nur einen Index setzen, damit die Datenbank alle Werte im Speicher behält. Das geht natürlich zu lasten der Speicherbelegung.
bis bald
akari
-
Ein "COUNT(DISTINCT field)" ist bei einer großen Datenmenge sehr langsam, da die DB intern jeden Datenwert der Tabelle durchgehen muß, um dann doppelte Einträge zu erkennen (egal welche Datenbank).
Ein Index ist zwar hilfreich, wenn man häufiger diese Spalte abfragt, dürfte aber selbst in diesem Fall nicht viel helfen.
Ich weiß nicht, ob Firebird die Analyse von SQL-Befehlen unterstützt, aber dies wäre hier ganz hilfreich (da du dann schauen kannst, ob hier intern der Index benutzt werden würde und wieviel Zeit das benötigt).Evtl. mal im Datenbank-Forum nachfragen bzw. dorthin verschieben lassen.
-
Bitte jemand mal in das DB Forum verschieben!
Danke
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum Datenbanken verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
So,
jetzt kommt die Antwort des SQL-Statements auch unter 1 s!:)
Das Problem lag an den Firebird embedded Server... hatte dummerweise noch nen alten 1.5.3.4870 Server und der hat das Statement irgendwie net richtig verarbeitet... jetzt mit den aktuellen 2.0.3.12981 Server läuft's perfekt!!!
Nun is Feierabend und Wochenende...:D
cya