Zitat von
hoika:
Hallo,
Zitat:
gibt es irgendwoi eine doku, wann
FB für einen ORDER einen Index verwendet und wann nicht?!?!?
Das entscheidet der Optimizer bei jeder
Query separat.
SQL-Code:
SELECT P.ID, (SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = P.ID ORDER BY TB.BUCHUNG DESC) AS AUFTRAGID
FROM PERSONAL P
Was willst du denn eigentlich erreichen ?
Hast du auf TERMINAL_BUCHUNGEN.BUCHUNG auch einen
DESC Index ?
Ein normaler (ASC) reicht nicht.
Ich würde das SubSelect eh weglassen.
Wie du richtig festgestellt hast, at
FB du schon noch Probleme.
Mach es doch etwa so
SQL-Code:
Select Max(TB.BUCHUNG) AS AUFTRAGID, PersonalId
From FROM TERMINAL_BUCHUNGEN
Group By PersonalId
Grouping ist meine grosse Schwäche
Ob dann noch ein Desc Index auf TERMINAL_BUCHUNGEN.BUCHUNG notwendig ist,
musst du ausprobieren.
Auf TERMINAL_BUCHUNGEN.PERSONALID sollte aber einer draufsein.
Heiko
Hallo also ich habe mittlerweile auf fast jedes Feld 2 Indexe einen ASC und einen DESC (zum testen)
Die tabelle hat ja auch mittlerweile schon über 8 Millionen einträge ...
Das Problem ist ja, eine normales Group bringt nicht die werte die ich brauche, da ich ja
den Wert AUFTRAGID aus der Tabelle TERMINAL_BUCHUNGEN brauche der am aktuellesten ist (sprich TB.BUCHUNG am ältesten)
(in der echt applikation sind noch ein paar WHERE dabei, aber die machen keinen Unterschied aus)
wenn eis ein
SELECT (TBAUFTRAGID BY MAX(TB.BUCHUNG)) oder so geben würde
sprich eine Aggreagatfunktion, die mir die Spalte AuftragID zurückliefert, von der Zeile, wo MAX(TB.BUCHUNG) das wäre ideal .... sowas kann ich meines erachtens nur mit so nem (SELECT FIRST 1 ... ) erreichen, ansonsten würde ich es auch in ein GROUP umbauen ...