CREATE TABLE ak_temp
(
misc_1 varchar2(4000),
misc_2 varchar2(4000),
time_of_insert timestamp
);
Abfrage 1 (Original):In Bezug auf Oracle Abfrage funktionales Verhalten
select *
from ak_temp
where misc_1 in('ankush')
or misc_2 in('ankush')
Abfrage 2:
select *
from ak_temp
where 'ankush' in (misc_1,misc_2)
Hallo, ich habe etwas ähnliches Problem mit den Abfragen, ich will Abfrage vermeiden 1 Da die Kosten in unserer Live-Umgebung etwas höher liegen, habe ich Abfrage 2 mit geringeren Kosten gefunden. Sind diese beiden Funktionen gleichwertig?
'Union' vermieden werden kann und mit' UNION ALL' mit Hilfe von [LNNVL] (https repaced werden: //docs.oracle.com/cd/B19306_01/server.102/b14200/functions078.htm) Funktion, die im unteren Zweig der Abfrage verwendet wird - also 'where misc_2 = 'ankush' AND LNNVL (misc_1 = 'ankush') '. Weitere Informationen finden Sie unter diesem Link: [Oracle - OR Expansion] (https://blogs.oracle.com/optimizer/entry/or_expansion_transformation). BTW - "union" funktioniert nur unter der Annahme, dass die Tabelle keine doppelten Zeilen enthält, andernfalls entspricht sie nicht der origine-Abfrage und führt zu falschen Ergebnissen. – krokodilko