Oracle:插入顺序中的结果集

时间:2021-06-10 13:49:53

标签: java database oracle resultset oracle19c

在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”

2 个答案:

答案 0 :(得分:2)

Oracle 是一个关系型数据库。其中,行没有任何特定的顺序,这意味着 select 语句在您多次运行时可能会以不同的顺序返回结果。通常不会,但是 - 如果有很多插入/删除 - 迟早你会注意到这种行为。因此,按所需顺序返回行的唯一确定方法是使用 - ta-daaa! - order by 子句。

此外,您还必须维护自己的插入顺序。一种简单的方法是使用源为序列的列。

答案 1 :(得分:0)

我会先在这里查看:previous-post

除非您指定 order by,否则我建议不要依赖任何顺序。

但是在查询中添加诸如 ORDER BY ROWNUM ASC; 之类的内容有什么不足之处?您可以修剪结果集 ( paginate ),甚至只对要“维护插入顺序”的实体进行修剪。

您是否在使用任何实体管理工具? Hibernate 也有一些你可以使用的默认值。 - 发布一些代码示例并可以提供额外的帮助。

相关问题