我有一个定义的序列,专门用于表中的列。递增1并缓存10。这是一个巨大的表,该列上没有索引。我想知道该列的最大值。由于max函数会花费很多时间,因此我正在考虑使用视图last_number
列all_sequences
。那是正确的方法吗?特别是涉及缓存?因此,如果表是仅插入的并且没有删除,并且插入的最大值last_number
是1000 ,我会看到1000吗?
编辑:数据库不适合常规流量后,我想知道这一点。运行此程序时没有其他连接。
如果您确实需要知道一列的最大值,那么最快的方法可能是在该列上添加索引。这样,查询只需要从索引中获取最后一个块即可确定最大值-您只需要确保正确编写查询即可利用Oracle的MIN / MAX优化(例如,SELECT MAX(id) FROM mytable
应该这样做),但可以检查执行情况先计划)
正如Justin所说,序列发生器极不可能用于此目的-不仅是因为回滚,而且还有其他序列功能(例如缓存,增量以及它们在RAC环境中的行为)意味着last_number
通常期望比列的实际最大值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句