oracle在排序字段都相同时按什么排序? 问题如标题,比如有如下SQL:select * from t order by t.a,t.b,t.c;在t.a,t.b,t.c三个字段都相同的情况下,Oracle会如何排序?另外,sqlserver数据库在这种情况下又是如何排序的? 解决方案 » 顶楼上,可能是按照rowid来排序的,这么做的代价会少点,其实可以做个小测试看看 按照rowid来排序的,大部分是按照插入时间顺序,极少数由于dml操作导致数据块变化 默认情况下,不写order by相当于按rowid排序。按相等字段排序应该会进行某种不稳定排序算法进行排序,并不是按rowiddelete之后再插入相等的数据也会改变排序,推测是与物理存储位置有关。再深入下去就没意思了,上面两点已经可以说明oracle排序的“随机性”。特别是oracle本身也没有公开order的具体算法,不同情况下可能有不同的算法。 EYGLE之书---- 二:Oracle数据库 获得操作系统文件列表 Oracle 触发器,函数,过程调用出问题了 帮帮忙 SQL 语句,在线等。。。不知道能不能实现的SQL语句。。。。。 数据恢复急,百分求救! 索引不能扩展(index can not extend。。。),怎么办? 相同表该怎样建立主从关系 多表关联查询语句 看看这个JOb出现什么问题? sql>grant dba to u_user 什么意思?谢谢。 64位的2008系统 装32位oracle 配置的报表需要64位 plsql连接不上CentOs7.6上装的oracle12C 报错ora00937不是单组分组函数
delete之后再插入相等的数据也会改变排序,推测是与物理存储位置有关。再深入下去就没意思了,上面两点已经可以说明oracle排序的“随机性”。特别是oracle本身也没有公开order的具体算法,不同情况下可能有不同的算法。