我有一組主鍵。該集以記錄將要顯示的方式排序。基於一組排序的主鍵檢索數據
我想按照與排序集中相同的順序從數據庫中檢索記錄。
目前我在做這樣的:
cursor getdata is
select snr, -- snr is the primary key
field1,
field2,
field3
from MyTable,
(select COLUMN_VALUE snr, rownum sort_key from TABLE(varray_of_snr)) snr_tab
where MyTable.snr = snr_tab.snr
order by snr_tab.sort_key;
的問題是,Oracle沒有讀取內選擇行以相同的順序,因爲它們是在varray
。無法保證Oracle不會從內部選擇中的varray
以相反順序讀取行。
有沒有簡單的方法來保證排序順序被保留?
有什麼問題?這個查詢很慢?即使你的varray包含數百個值,排序也會很快。你確定你的查詢使用pk索引嗎?如果速度慢,可能會完全掃描桌子。 –
問題是,不能保證Oracle不會從內部select中的varray中以相反的順序讀取行。 –