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

oracle的数据库实现就一个原则,怎么快怎么效率高就怎么来。大多数情况下不需要排序还非得按主键排序这不是浪费资源么?

ORACLE可以借助DECODE函数,自定义顺序排序:

另外,在Report开发中,常需要将Total放最后,其它项则按其它排序方式(一般按正常的升序),可看作同一列有两种排序方式,那么可以这样:

关于oracle排序的几点认识:

(1)oracle本身不具有任何默认排序功能,要想排序,必须使用orderby,而orderby后的数据行默认是asc(升序排列),要降序选择desc;

(2)oracle是按块进行读取数据的,Oracle会根据具体的数据块的存储返回记录,如果数据按顺序存储,则可能使读取出来的数据是按顺序的,给用户误解为默认排序,实际上oracle没有进行任何排序操作;

(3)rowid表示的是数据存放的数据块内部地址,如果没有要求排序,oracle会顺序的从数据块中读取符合条件的数据返回到客户端,不过看起来好像是按照rowid排序似的如果数据量足够大,即使相同的语句,都有可能不同的结果。一般而言,表是堆表,所以是无序的,它是按照物理存放顺序来读取的,rowid是自动随行生成的;

(4)oracle的rowid:

rowid是数据库的一个伪列,建立表的时候数据库会自动为每个表建立ROWID列用来唯一标识一行记录。rowid是存储每条记录的实际物理地址,对记录的访问是基于ROWID。每条记录的物理地址,对数据库中记录行的最快检索方式就是使用rowid来进行查找。唯一标识一行记录selectrowid,*from表名试一下,你就明白了,rowid就象是邮递员送信时要找的信封上的家庭地址一样,每个rowid都不会重复,oracle查找通过它可以更快地查找到数据.rowid是一个伪列,对应块号,行号,行的序号.

小编结语:

更多内容尽在课课家教育!

oracle查询的默认排序,oracle 默认排序及认知相关推荐

  1. oracle 查询数据库io,理解Oracle中的并行查询IO

    Oracle缓存区如何通过频繁地缓存在共享内存中访问数据来帮助降低磁盘IO瓶颈.Oracle有一种轮换IO机制,叫做"直接路径IO",如果它判断到绕过缓存区直接执行IO会更快速的话 ...

  2. oracle查询并更新数据库,oracle数据库查询和更新

    package sqltest; import java.sql.*; import parameter.BaseCanShu; public class PublicDbOracle { stati ...

  3. oracle 查询列合并行,Oracle 查询合并列

    在ORACLE  查询时,有时要将多个列合并成一行,其方法如下: 1. decode 函数 decode 函数的语法为: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省 ...

  4. oracle查询报错clb,Oracle RAC 负载均衡与故障转移(三)

    Server Service TAF https://www.cndba.cn/Breath/article/2324 服务端 service TAF 1.服务器端透明故障转移,通过配置service ...

  5. Oracle查询所有序列;[oracle中如何创建表的自增ID(通过序列);oracle sql语句大全

    Oracle查询所有序列 oracle sql语句大全 oracle中如何创建表的自增ID(通过序列)

  6. oracle查询两个分区,oracle下 分区表部分分区查询慢有关问题(2)

    当前位置:我的异常网» Oracle技术 » oracle下 分区表部分分区查询慢有关问题 oracle下 分区表部分分区查询慢有关问题(2) www.myexceptions.net  网友分享于: ...

  7. oracle查询相同的值,oracle 查询两个字段值相同的记录,

    oracle 查询两个字段值相同的记录,select A.* from tb_mend_enrol A, (select A.Typeid, A.address from tb_mend_enrol ...

  8. oracle 查询 sql 执行时间设置,ORACLE 查询SQL执行时间

    ORACLE 查询SQL执行时间: SELECT C.sample_time 执行时间, A.ELAPSED_TIME_DELTA / 1000000 "执行耗时(S)", B.s ...

  9. oracle查询大小写敏感参数,让Oracle 大小写敏感 表名 字段名 对像名

    一.解决方案 1.在表名.字段名.对象名上加上双引号,即可实现让oracle大小写区分. 2.但是这又引起了另一个问题:在数据库操作中,sql语句中相应的表名.字段名.对象名上一定要加双引号. 解决办 ...

  10. oracle查询学生人数语句,Oracle期末复习题-带答案

    Oracle期末复习题 1.简单介绍一下Oracle数据库管理系统 2.举例说明Oracle与SQL Server的异同(至少说出2项以上) 3.简述Oracle数据库的体系结构 4.Oracle数据 ...

最新文章

  1. 在项目中使用Google Closure Compiler
  2. Android开发资料学习(转载/链接)
  3. AIX存储管理(二)物理卷管理
  4. 云计算学习(2-4)云计算的案例
  5. 6、用户登录并发、新建以及编辑操作;
  6. C如何将二维数组作为返回值
  7. npm 切换源_nrm:npm包管理工具
  8. 自适应布局 的 解决方案
  9. Android高级开发面试题目,再也不用担心不能升职加薪了。
  10. 文档权限服务器上,服务器上的权限
  11. java读取csv文件_使用扫描仪读取Java中的CSV文件
  12. go1.5源代码安装
  13. 软件测试---微信小程序测试点
  14. STM32F407 USB CDC调试与经验总结
  15. BAT公司 or 创业公司,选择哪个更好?
  16. 小学计算机兴趣小组计划书,小学科技兴趣小组活动计划书
  17. 如何解决地图已加载却不能渲染的问题?
  18. 若依分离版整合IJpay实现第三方支付-(微信支付篇_v2)
  19. 【目标跟踪】Long-term Correlation Tracking 阅读笔记
  20. matlab程序 直线插补,无聊写matlab仿真直线插补算法

热门文章

  1. 基于CNN模型的遥感图像复杂场景分类
  2. matlab表面形貌,采用Photoshop与MATLAB软件分析壁画表面形貌变化的方法与流程
  3. Word排版——毕业论文专业排版4——题注
  4. masked_softmax掩蔽softmax操作实现
  5. element ui 弹窗遮罩层在弹出层的上面。点击关闭弹窗弹窗关闭了但是遮罩层没关
  6. 笑话与趣图框架微信小程序源码
  7. C++static_cast用法
  8. 定义一个圆类-Circle,在类的内部提供一个属性:半径(r):同时提供两个方法:计算面积( getArea() )和计算周长( getPerimeter() )。
  9. 主板螺丝是机箱配还是主板配_电脑机箱螺丝规格详解 DIY装机容易忽视的小玩意...
  10. ddos压力测试软件