我有一個SQL查詢,看起來像這樣:甲骨文LIMIT和1000列限制
SELECT foo "c0",
bar "c1",
baz "c2",
...
FROM some_table
WHERE ...
爲了應用的限制,只有從該查詢返回的記錄的子集,我用下面的包裝SQL :
SELECT *
FROM (
SELECT t.*,
ROW_NUMBER() OVER (ORDER BY ...) rnum
FROM (
... original SQL goes here ...
) t
)
WHERE rnum BETWEEN 1 AND 10
我的問題是,原來的查詢是選擇超過1000列跨越大量的連接到其他表。 Oracle每個表或視圖的內部限制爲1000列,顯然,我用來限制結果集的包裝器SQL正在創建一個應用此限制的臨時視圖,導致整個事件失敗。
是否有另一種分頁方法不會創建這樣的視圖,或者不會受1000列限制的影響?
我對將工作分解爲塊的建議不感興趣,因爲我已經完全瞭解所有這些方法,所以不要選擇> 1000列等。
「*選擇超過1000列*」,似乎對您的數據模型來說真的很奇怪。 –
@a_horse_with_no_name:如果奇怪,你的意思是我有超過1000件有關單個實體的離散數據,這些數據對於我的特定域來說都是相關且必需的,但是在所有域的集合中這是非常罕見的,重新正確。完全無益,但正確。 – FtDRbwLXw6
在30年的數據庫設計中,我從未見過一個實體需要超過1000列。我不會感到驚訝,如果你的模型可以優化,從而解決問題的根本原因,而不是戰鬥症狀 –