BaseBallBatBoy
Erfahrenes Mitglied
Ich habe folgende Query, welche bei mir ca. 17h braucht.
Dies dauert leider zu lange, daher muss ich nun hier optimieren.
Query:
Noch einige Angaben zu den Daten:
tableA hat 50mio rows. Ca. 2.5mio (5%) haben LINE_V = 0, der Rest hat LINE_V = 1
tableB hat 250mio rows.
tableC hat 80mio rows.
tableD hat 200k rows
tableE hat 200k rows.
Und die Indexe:
tableA: PK Index auf LINE_A, Bitmap Index auf LINE_V
tableB: B*Tree Index auf LINE_A
tableC: B*Tree Index auf LINE_A, B*Tree Index auf LINE_K,
tableD: B*Tree Index auf LINE_K, B*Tree Index auf LINE_S
tableE: B*Tree Index auf LINE_S
(die Tabellen haben auch noch weitere Indexe, welche aber in diesem Zusammenhang keine Rolle spielen sollten, da sie auf anderen Spalten liegen)
Trotz dieser Indexe verwendet der Optimizer keinen einzigen Index und macht immer Full Table Scan.
Auch wenn vorher ANALYZE TABLE x ESTIMATE STATISTICS; für jede der Tabellen gemacht wurde.
Der /*+ RULE */ Hint hat auch keine Veränderung gebracht. Mit einem Index Hint kann ich erzwingen, dass der Bitmap Index verwendet wird.
Hat mir jemand eine Idee was ich noch versuchen könnte?
Dies dauert leider zu lange, daher muss ich nun hier optimieren.
Query:
SQL:
SELECT
b.LINE_A
, b.LINE_B
, b.LINE_C
, b.LINE_D
, b.LINE_E
, e.LINE_X
, a.LINE_Y
FROM tableA a
INNER JOIN tableB b
ON a.LINE_A = b.LINE_A
INNER JOIN tableC c
ON b.LINE_A = c.LINE_A
LEFT OUTER JOIN tableD d
ON c.LINE_K = d.LINE_K
LEFT OUTER JOIN tableE e
ON d.LINE_S=e.LINE_S
AND LTRIM(RTRIM(e.LINE_S)) IS NOT NULL
AND LTRIM(RTRIM(e.LINE_X)) IS NOT NULL
AND a.LINE_V = 0;
Noch einige Angaben zu den Daten:
tableA hat 50mio rows. Ca. 2.5mio (5%) haben LINE_V = 0, der Rest hat LINE_V = 1
tableB hat 250mio rows.
tableC hat 80mio rows.
tableD hat 200k rows
tableE hat 200k rows.
Und die Indexe:
tableA: PK Index auf LINE_A, Bitmap Index auf LINE_V
tableB: B*Tree Index auf LINE_A
tableC: B*Tree Index auf LINE_A, B*Tree Index auf LINE_K,
tableD: B*Tree Index auf LINE_K, B*Tree Index auf LINE_S
tableE: B*Tree Index auf LINE_S
(die Tabellen haben auch noch weitere Indexe, welche aber in diesem Zusammenhang keine Rolle spielen sollten, da sie auf anderen Spalten liegen)
Trotz dieser Indexe verwendet der Optimizer keinen einzigen Index und macht immer Full Table Scan.
Auch wenn vorher ANALYZE TABLE x ESTIMATE STATISTICS; für jede der Tabellen gemacht wurde.
Der /*+ RULE */ Hint hat auch keine Veränderung gebracht. Mit einem Index Hint kann ich erzwingen, dass der Bitmap Index verwendet wird.
Hat mir jemand eine Idee was ich noch versuchen könnte?
Zuletzt bearbeitet von einem Moderator: