Oracle在不指定Order By的时候,默认排序相关问题。

小阎王 2014-10-30 11:13:10
求助。Oracle在不指定Order By的时候,有没有默认排序呢。
有些人说会按照rowid排序,到底这个是否是权威解答不太清楚,求大神指点。
在不指定Order By 的情况下执行多次查询,执行的结果是否会有差异(主要是记录的顺序方面)?
...全文
796 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bw555 2014-10-30
  • 打赏
  • 举报
回复
大多数是按照rowid排序的,但不是绝对,尤其是多表关联查询的时候
CT_LXL 2014-10-30
  • 打赏
  • 举报
回复
[quote=引用 楼主 java_pet 的回复:] [quote] 应该是按块的读取顺序现实的, 如果没有对数据结构进行更改,多次查询应该不会有差异。
bw555 2014-10-30
  • 打赏
  • 举报
回复
不写排序的话多次查询会有差异,是根据读取数据的先后顺序排序的
bw555 2014-10-30
  • 打赏
  • 举报
回复
刚去测试了下,一个1万+的表加不加order by rowid就产生了差异
bw555 2014-10-30
  • 打赏
  • 举报
回复
引用 6 楼 zlloct 的回复:
[quote=引用 4 楼 java_pet 的回复:] 如果只是单表查询的话,不知道Order by的情况下,是否确切一定按照rowid排序呢,是否还有其他意外的情况
不一定,你可以试一下就知道了,是按照块读取顺序来显示的。 至于块读取的顺序又跟你查询的语句有关,比如走索引或者全表查询。 即便是全表查询,也不一定,因为rowid还包含一些特殊字符。如“\”,"+"等。 通过实践证明了,按rowid排序和默认的查询结果并不一致 [/quote] 果然实践是检验真理的唯一标准啊,呵呵
惜分飞 2014-10-30
  • 打赏
  • 举报
回复
不同的版本问题 你可以尝试设置_gby_hash_aggregation_enabled=false,应该就有了group by 排序的功能
CT_LXL 2014-10-30
  • 打赏
  • 举报
回复
引用 4 楼 java_pet 的回复:
如果只是单表查询的话,不知道Order by的情况下,是否确切一定按照rowid排序呢,是否还有其他意外的情况
不一定,你可以试一下就知道了,是按照块读取顺序来显示的。 至于块读取的顺序又跟你查询的语句有关,比如走索引或者全表查询。 即便是全表查询,也不一定,因为rowid还包含一些特殊字符。如“\”,"+"等。 通过实践证明了,按rowid排序和默认的查询结果并不一致
bw555 2014-10-30
  • 打赏
  • 举报
回复
单表的话应该可以,没做过具体测试
小阎王 2014-10-30
  • 打赏
  • 举报
回复
如果只是单表查询的话,不知道Order by的情况下,是否确切一定按照rowid排序呢,是否还有其他意外的情况

17,088

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧