我有一个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列。我不会感到惊讶,如果你的模型可以优化,从而解决问题的根本原因,而不是战斗症状 –