PLSQL 查询的默认排序分析

ORACLE对无order by的语句返回的结果不进行排序,ORACLE此时的处理方式是按照数据的物理存储顺序来读取数据。因为rowid是每行数据的地址,所以有时候看起来会像是使用rowid排序的。
但这个顺序是可能被打乱的,在表的数据被删除后,rowid会被新插入的数据占用,所以一个无order by查询结果看起来也可能是个杂乱无章的。

测试:
--建立测试用表

create table order_test( seq   varchar2(2) ); 
--插入数据并查询
insert into order_test values('A');
insert into order_test values('B');
insert into order_test values('C');

select seq from order_test;

查询结果如下
A,
B,
C
删除B,并插入D

delete from order_test where seq = 'B';
insert into order_test values('D');
select seq from order_test;

查询结果按rowid排序(删除B后,rowid可被新插入的行使用)
A,
D,
C

而不是按插入顺序排序
A,
C,
D

posted @   胖大海527  阅读(153)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示