1
CREATE TABLE ak_temp
(
misc_1 varchar2(4000),
misc_2 varchar2(4000),
time_of_insert timestamp
);
查詢1(原件):關於Oracle查詢功能行爲
select *
from ak_temp
where misc_1 in('ankush')
or misc_2 in('ankush')
查詢2:
select *
from ak_temp
where 'ankush' in (misc_1,misc_2)
您好,我有幾分相似的問題與疑問,我希望避免查詢1,因爲我們的生活環境中的成本正在上升,因此我已經用較少的成本計算出了查詢2,它們在功能上是否相同?
'Union'可避免,並且可以用repaced'UNION ALL'與[LNNVL(HTTPS的幫助: //docs.oracle.com/cd/B19306_01/server.102/b14200/functions078.htm)函數用於查詢的底部分支 - 也就是'where misc_2 ='ankush'AND LNNVL(misc_1 ='ankush') '。有關更多詳細信息,請參閱此鏈接:[Oracle - OR擴展](https://blogs.oracle.com/optimizer/entry/或擴展轉換)。順便說一句''union'只能在假設表不包含重複行的情況下工作,否則它不等同於oryginal查詢,它會給出錯誤的結果。 – krokodilko