Freitag, November 25, 2005

Windows Memory Limit

Unter Windows (32-Bit) kann ein Prozess üblicherweise nicht mehr als 2 GB RAM verwenden. Dieses Limit lässt sich über eine Einstellung in der boot.ini erhöhen. Näheres dazu z.B. unter http://www.brianmadden.com/content/content.asp?ID=69.

Donnerstag, November 03, 2005

Outer Join mit OR-Verknüpfung

Laut Oracle Database SQL Reference (für 10g) gilt: "A WHERE condition containing the (+) operator cannot be combined with another condition using the OR logical operator."

Die Datenbank behauptet das gleiche:

SQL> r
1 select *
2   from test2 t2, test3 t3
3  where t2.a = t3.a(+)
4*    or t3.b = 3

where t2.a = t3.a(+)
*ERROR at line 3:

ORA-01719: outer join operator (+) not allowed in operand of OR or IN

Es gibt allerdings ab Oracle 9 die folgende Möglichkeit:

select * 
  from test2 t2 
  left outer join 
       test3 t3 
    on (t2.a = t3.a or t3.b = 3);

Das Problem liegt also beim (+)-Operator (dessen Verwendung Oracle auch nicht mehr empfiehlt - obwohl er mir immer besser gefallen hat als die verbose "left outer join on blabla"-Variante - was angesichts solcher Einschränkungen allerdings einleuchtet).

Nachtrag 27.07.2011: Wolfgang Breitling (den Link muss ich schuldig bleiben) und andere (z.B. der Herr Lewis) haben gelegentlich darauf hingewiesen, dass Oracle (in diesem Fall also der CBO) mit der traditionellen (und über Jahrzehnte hinweg eingesetzten) Join-Syntax besser zurecht kommt.