![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBConsole
Index setzen?
Ich habe folgendes SQL
Code:
das benötigt ca. 4sekunden bei 800000 Datensätze.
SELECT MAX(DATUM), USERID FROM BUCHUNGEN GROUP BY USERID
Habe nun schon alle Indexe gesetzt ASC und DESC für beide Felder - es ändert sich allerdings nichts an der Ausführungsgeschwindigkeit. Gibt es da keinerlei Möglichkeiten? |
AW: Index setzen?
Hast Du im Ausführungsplan geschaut, ob er die Indices auch benutzt ?
|
AW: Index setzen?
Code:
wobei BUCHUNGEN_USERID der Index ist.
PLAN (BUCHUNGEN ORDER BUCHUNGEN_USERID)
mehr steht da nicht |
AW: Index setzen?
Dann nutzt er zu mindestens für das ORDER BY einen Index. Gibt es auch für das Feld "DATUM" einen Index ?
|
AW: Index setzen?
ja da gibt es auch einen Index (bzw zwei - einen ASC und einen DESC)
das sieht man wenn ich folgendes ausführe
Code:
das geht in 1ms und verwendet folgenden Plan
SELECT MAX(DATUM) FROM BUCHUNGEN
Zitat:
|
AW: Index setzen?
Wir hatten das Problem auch mal. Ich glaube bei max() verwendet Firebird immer einen full table scan. Versuche mal eine where bzw. having-Klausel mit einzubauen (having userid > -1), damit ließ sich das glaube beheben.
Dasselbe tritt auch bei count(*) auf. |
AW: Index setzen?
Was wäre mit einem gemeinsamen Index über die zwei Felder?
|
AW: Index setzen?
Also der Index über beide Felder bringt leider auch nichts (hatte ich auch schon vorher drinnen sowohl ASC als auch DESC)
das having bringt leider auch nichts, nur ein where würde was bringen, wenn ich dadurch die Datenmenge verringere, aber wenn ich alle user brauche, dann hilft es nichts mehr |
AW: Index setzen?
Zitat:
Siehe auch hier: ![]() ![]() oder hier: ![]() |
AW: Index setzen?
ja ich meinte ja, wenn ich im where ein userid < 20 mache, dann gehts schnell, weil auch weniger Datensätze kommen
wenn ich ein USERID > 0 mach oder > 10 (dann dauerts halt statt 4 sekunden 3.9 sekunden oder so) und für das Datum habe ich ja einen DESC index, deswegen geht das reine SELECT MAX(DATUM) ohne gruppieren ja auch sehr sehr schnell... nur eben nicht mehr sobald ich nach dem feld gruppiere ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz