Performance-Problem bei GTTs(?)
- Dieses Thema hat 0 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 11 Jahre, 12 Monaten von
Anonym.
-
AuthorPosts
-
26. September 2011 um 11:53 Uhr #4134
AnonymInaktivHallo zusammen,
folgendes (stabiles) Szenario:
gegeben sind 2 GTT (G1, G2) und eine "normale" Tabelle T. Index auf T: F1, F2, Date1
Join T, G1 mit G1.F1=T.F1 and G1.F2=T.F2 and Date1 <= Datum and Date2 >= Datum (die Datumswerte sind von der Anwendung aus gleich; Date2 in keinem Index vorhanden)
Zugriff ok; Index wird genommen.erweitere ich den SQL um eine NotExists-Query (G1.F1=G2.F1 and G1.F2=G2.F2) also gibts die Treffer noch nicht in G2, kommt es auf das Datum an, ob der Index genommen wird. Bei meinen Versuchen nahm der Optimizer den Index nicht mehr, wenn das Datum etwa 5 Monate grösser ist als Date2. Dem Indexfeld Date1 kann ich dabei hinhalten, was ich will; wenn der Bedingung Date2 >= Datum der Inhalt nicht passt, wird der Index nicht mehr genommen.
Interessanterweise dreht sich der Zugriff wieder, wenn ich in der NotExists-Subquery statt G1 die T-Felder nehme; also T.F1=G2.F1 and T.F2=G2.F2. Da nimmt DB" IMMER den Index; unabhängig vom Wert.
Kennt einer dieses Verhalten?
Ach so; wir setzen immer noch auf V8 😉Danke und Grüsse
AlexanderSELECT T.F1 , T.F2
 FROM G1 , T
WHERE G1.F1 = T.F1 AND G1.F2 = T.F2
  AND T.DATE1 <= ‚2011-09-26‘ AND T.DATE2 >=’2011-09-26’ Â
   AND NOT EXISTS                                  Â
  (SELECT 1 FROM G2
   WHERE G1.F1 = G2.F1 AND G1.F2 = G2.F2)      Â
                               Â
-
AuthorPosts
You must be logged in to reply to this topic.