Was mache ich falsch ?
[ ruban.de ] [ Antworten ] [ Forum ]
Geschrieben von Andreas on Dezember 09, 2002 um 13:08:
Hallo zusammen ! Ich habe folgendes SQL: EXEC SQL SELECT RBIS01_NA1 INTO :RBIS01-NA FROM SYBIS01 WHERE RBIS01_NA1IX LIKE 'BAU%' AND RBIS01_ORTIX LIKE 'BOCH%' OR RBIS01_NA2IX LIKE 'BAU%' AND RBIS01_ORTIX LIKE 'BOCH%' END-EXEC In der Tabelle befinden sich 8,2 Millionen Datensätze. Runstats + Reorg wurden ausgeführt Der INDEX 02 besteht aus NA1IX + ORTIX. Der INDEX 04 besteht aus NA2IX + ORTIX. Hier ein Auszug aus dem EXPLAIN Subquery 1, Step 1 0 First Table F536.TBBIS01 (1) M Multiple Index MX Index Scan F536.IXBIS0102 MX Index Scan F536.IXBIS0104 MU Union Processor Processor Milliseconds Service Units ============ ============= 1 4 Sieht doch alles sehr gesund aus. Beim Ausführen der Abfrage warte ich auf die 400 Ergebnisszeilen jedoch ca. 40 Sekunden. Bastel ich die Abfrage programmseitig auseinander also EXEC SQL SELECT RBIS01_NA1 INTO :RBIS01-NA FROM SYBIS01 WHERE RBIS01_NA1IX LIKE 'BAU%' AND RBIS01_ORTIX LIKE 'BOCH%' OR END-EXEC UND danach EXEC SQL SELECT RBIS01_NA1 INTO :RBIS01-NA FROM SYBIS01 WHERE RBIS01_NA2IX LIKE 'BAU%' AND RBIS01_ORTIX LIKE 'BOCH%' OR END-EXEC und mische die Ergebnisse dann im Programm habe ich meine 400 Datensätze nach ca.3 Sekunden. Wie kann das sein ?????
Schreibe eine Antwort
|