Code: Alles auswählen.
SELECT *
INTO TABLE i_Tab1
FROM Tab1
WHERE anfang LE sy-datum AND
ende GE sy-datum AND
( wert NE 'A' AND
wert NE 'B' AND
wert NE 'C' AND
wert NE 'D' AND
wert NE 'E' AND
wert NE 'F' AND
wert NE ' ' ).
SELECT *
INTO TABLE i_Tab2
FROM Tab2
WHERE anfang LE sy-datum AND
ende GE sy-datum AND
( zahlwert EQ '0' OR
zahlwert EQ '5' OR
zahlwert EQ '0' OR
zahlwert EQ '0' ).
LOOP AT i_Tab1 INTO line_Tab1.
LOOP AT i_Tab2 INTO line_Tab2 WHERE ident_nr eq line_Tab1-ident_nr.
* Ausgabe der Liste
ENDLOOP.
ENDLOOP.
Jein, ein JOIN umgeht den Datenbankpuffer.a-dead-trousers hat geschrieben:Wenn die Felder der Join-Bedingung (ON...) einen Index besitzen oder noch besser den PRIMARY KEY umfassen, sollte ein Join performanter sein als die Einzelselektion.
Code: Alles auswählen.
SELECT * into CORRESPONDING FIELDS OF TABLE Tab2
FROM Tab1 as t1
join Tab2 as t2
on t1~ident_nr eq t2~ident_nr
WHERE t1~anfang LE sy-datum AND
t1~ende GE sy-datum AND
( t1~wert NE 'A' AND
t1~wert NE 'B' AND
t1~wert NE 'C' AND
t1~wert NE 'D' AND
t1~wert NE 'E' AND
t1~wert NE 'F' AND
t1~wert NE ' ' )
AND (
t2~zahlwert EQ '0' OR
t2~zahlwert EQ '5' OR
).
Schon klar. Aber hin und wieder kann es sein, dass durch zwei Selects einfach soviel "Mist" mitselektiert wird, dass sich der Vorteil durch den Datenbankpuffer (oder sogar Applikationsserver-Puffer) soweit relativiert und ein Join daher besser ist.ralf.wenzel hat geschrieben:Jein, ein JOIN umgeht den Datenbankpuffer.