oracle查询的默认排序,oracle 默认排序及认知
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 默认排序及认知相关推荐
- oracle 查询数据库io,理解Oracle中的并行查询IO
Oracle缓存区如何通过频繁地缓存在共享内存中访问数据来帮助降低磁盘IO瓶颈.Oracle有一种轮换IO机制,叫做"直接路径IO",如果它判断到绕过缓存区直接执行IO会更快速的话 ...
- oracle查询并更新数据库,oracle数据库查询和更新
package sqltest; import java.sql.*; import parameter.BaseCanShu; public class PublicDbOracle { stati ...
- oracle 查询列合并行,Oracle 查询合并列
在ORACLE 查询时,有时要将多个列合并成一行,其方法如下: 1. decode 函数 decode 函数的语法为: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省 ...
- oracle查询报错clb,Oracle RAC 负载均衡与故障转移(三)
Server Service TAF https://www.cndba.cn/Breath/article/2324 服务端 service TAF 1.服务器端透明故障转移,通过配置service ...
- Oracle查询所有序列;[oracle中如何创建表的自增ID(通过序列);oracle sql语句大全
Oracle查询所有序列 oracle sql语句大全 oracle中如何创建表的自增ID(通过序列)
- oracle查询两个分区,oracle下 分区表部分分区查询慢有关问题(2)
当前位置:我的异常网» Oracle技术 » oracle下 分区表部分分区查询慢有关问题 oracle下 分区表部分分区查询慢有关问题(2) www.myexceptions.net 网友分享于: ...
- oracle查询相同的值,oracle 查询两个字段值相同的记录,
oracle 查询两个字段值相同的记录,select A.* from tb_mend_enrol A, (select A.Typeid, A.address from tb_mend_enrol ...
- oracle 查询 sql 执行时间设置,ORACLE 查询SQL执行时间
ORACLE 查询SQL执行时间: SELECT C.sample_time 执行时间, A.ELAPSED_TIME_DELTA / 1000000 "执行耗时(S)", B.s ...
- oracle查询大小写敏感参数,让Oracle 大小写敏感 表名 字段名 对像名
一.解决方案 1.在表名.字段名.对象名上加上双引号,即可实现让oracle大小写区分. 2.但是这又引起了另一个问题:在数据库操作中,sql语句中相应的表名.字段名.对象名上一定要加双引号. 解决办 ...
- oracle查询学生人数语句,Oracle期末复习题-带答案
Oracle期末复习题 1.简单介绍一下Oracle数据库管理系统 2.举例说明Oracle与SQL Server的异同(至少说出2项以上) 3.简述Oracle数据库的体系结构 4.Oracle数据 ...
最新文章
- 在项目中使用Google Closure Compiler
- Android开发资料学习(转载/链接)
- AIX存储管理(二)物理卷管理
- 云计算学习(2-4)云计算的案例
- 6、用户登录并发、新建以及编辑操作;
- C如何将二维数组作为返回值
- npm 切换源_nrm:npm包管理工具
- 自适应布局 的 解决方案
- Android高级开发面试题目,再也不用担心不能升职加薪了。
- 文档权限服务器上,服务器上的权限
- java读取csv文件_使用扫描仪读取Java中的CSV文件
- go1.5源代码安装
- 软件测试---微信小程序测试点
- STM32F407 USB CDC调试与经验总结
- BAT公司 or 创业公司,选择哪个更好?
- 小学计算机兴趣小组计划书,小学科技兴趣小组活动计划书
- 如何解决地图已加载却不能渲染的问题?
- 若依分离版整合IJpay实现第三方支付-(微信支付篇_v2)
- 【目标跟踪】Long-term Correlation Tracking 阅读笔记
- matlab程序 直线插补,无聊写matlab仿真直线插补算法
热门文章
- 基于CNN模型的遥感图像复杂场景分类
- matlab表面形貌,采用Photoshop与MATLAB软件分析壁画表面形貌变化的方法与流程
- Word排版——毕业论文专业排版4——题注
- masked_softmax掩蔽softmax操作实现
- element ui 弹窗遮罩层在弹出层的上面。点击关闭弹窗弹窗关闭了但是遮罩层没关
- 笑话与趣图框架微信小程序源码
- C++static_cast用法
- 定义一个圆类-Circle,在类的内部提供一个属性:半径(r):同时提供两个方法:计算面积( getArea() )和计算周长( getPerimeter() )。
- 主板螺丝是机箱配还是主板配_电脑机箱螺丝规格详解 DIY装机容易忽视的小玩意...
- ddos压力测试软件