Welcher Operator in Orakel ist leistungsfähiger: IN oder OR
ex:
select * from table where y in (1,2,3)
ou
select * from table where y = 1 or y = 2 or y = 3
Welcher Operator in Orakel ist leistungsfähiger: IN oder OR
ex:
select * from table where y in (1,2,3)
ou
select * from table where y = 1 or y = 2 or y = 3
Ich würde zögern, OR auf diese Weise zu verwenden. Sie müssen vorsichtig sein, wenn Sie zusätzliche Kriterien hinzufügen. Wenn Sie zum Beispiel ein AND hinzufügen, müssen Sie daran denken, Klammern hinzuzufügen.
z. B:
select * from table where y = 1 or y = 2 or y = 3
wird geändert in:
select * from table where ( y = 1 or y = 2 or y = 3 ) AND x = 'value'
Es kann leicht passieren, dass man die Klammern vergisst und einen schwer zu entlarvenden Fehler einbaut. Allein aus Gründen der Wartungsfreundlichkeit würde ich dringend empfehlen, IN anstelle von OR zu verwenden.
Bei einer einfachen Abfrage wie der Ihren ist der Optimierer klug genug, beide zu 100 % gleich zu behandeln, so dass sie identisch sind.
ABER, das ist möglicherweise nicht zu 100 % der Fall.
Bei der Optimierung großer komplexer Gelenke ist es z. B. plausibel, dass der Optimierer die beiden Ansätze nicht so intelligent gleichsetzt und daher den falschen Plan wählt. Ich habe ein ähnliches Problem bei Sybase beobachtet, weiß aber nicht, ob es auch bei Oracle auftritt (daher meine Einschränkung "möglicherweise").
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.