1
我有一個表,它給出了兩個項目之間的值。該表格包含以下列:聯盟SQL查詢性能
itemA | itemB | value
1 | 2 | 125
1 | 3 | 56
3 | 2 | 78
2 | 4 | 24
4 | 1 | 994
3 | 4 | 7
我強調對稱值不會重複。例如,現在有一行itemA = 2和itemB = 1,值= 125,因爲此數據已經存儲在itemA = 1和itemB = 2中。
現在我想要獲取項目1, 2和3,但也有對稱值。類似的東西在SQL結果集:
itemA | itemB | value
1 | 2 | 125
1 | 3 | 56
2 | 1 | 125
2 | 3 | 78
3 | 1 | 56
3 | 2 | 78
我成功獲得,與follwoing SQL查詢:
select itemA as iA, itemB as iB, value
from table
where itemA in (1,2,3)
and itemB in (1,2,3)
union all
select itemB as iA, itemA as iB, value
from table
where itemA in (1,2,3)
and itemB in (1,2,3)
order by iA, iB;
但是,它一直對我說,UNION操作符是性能殺手,這表格實際上有超過100 M行。但經過數小時的腦力激盪後,我沒有找到另一種方法來解決這個問題。請你能看到一個更好,更高性能的SQL查詢來獲得這個結果集。
預先感謝您
對於codereview比stackoverflow更多。順便說一下,提到數據庫管理系統真的從來沒有受傷... – gdoron
是的,數據庫是:Oracle數據庫11g企業版版本11.2.0.3.0 - 64位生產 – Comencau