【发布时间】:2021-08-27 13:01:15
【问题描述】:
在Oracle 数据库中,select 语句select * from tablename 不按插入顺序给出输出。在几篇文章中,我们发现Oracle数据库是基于Rowid来存储行信息的。
我们在基于 Java 的 Web 应用程序中使用 Oracle,并且需要在每个模块中按插入顺序显示数据。因此,对每个表应用 order by 子句是不可行的,并且会降低应用程序的性能。 有没有其他方法可以让select语句按插入顺序返回数据?
使用的 Oracle 版本是“Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production Version 19.3.0.0.0”
【问题讨论】:
-
SQL 数据是一个无序集,unless you have an
order byclause。 可能有一些边缘情况(如 IOT),在没有它的情况下它也可以工作,但你不应该依赖它,而且无论如何这对你没有帮助。 -
除了其他 cmets,我想解决您对 rowid 的引用。 rowid 与“插入顺序”无关。它只是行的“物理”地址——rowid 值包含定位行所需的信息:对象的数据对象编号;该行所在的数据文件中的数据块;该行在数据块中的位置(第一行为 0)。行所在的数据文件(第一个文件是 1)。文件号是相对于表空间的。 docs.oracle.com/cd/B19306_01/server.102/b14200/…
标签: java database oracle resultset oracle19c