是否存在强制 Oracle(在插入/更新/删除时)使用 row_num 分析函数来分配行号的方法,以后可以通过简单地调用 where rownumber = X 来检索?
示例代码来说明我的意思:
select foo,bar,baz
row_number() over (partition by bang order by some_date desc) rn
from my_table
上述查询将根据分区子句分配行号。
现在,当我查询并且我想要 where rownumber = XI 可以这样做时:
select foo,bar,baz
from my_table
where rownumber=1
这样做的原因是为了避免查询开销并将其推回到在系统中发生频率要低得多的 DDL 语句中。所以我的问题又来了,这样的事情可能吗?
评论
每个新的插入/更新/删除都可能会更新表的每一行……这可能需要大量的日志记录(和锁定)。如果您的数据本质上是静态的,则在每次加载或更新时重新生成行号。
如果我们删除更新/删除的约束,我不相信这种推理仍然存在,尤其是在时间对象驱动它的情况下。