没有合适的资源?快使用搜索试试~ 我知道了~
Oracle数据库中ORDER BY排序和查询按IN条件的顺序输出
5 下载量 58 浏览量
2020-09-10
06:17:26
上传
评论
收藏 71KB PDF 举报
温馨提示
试读
3页
主要介绍了Oracle数据库中ORDER BY排序和查询按IN条件的顺序输出的方法,其中ORDER BY的排序结果需要注意其是否稳定,需要的朋友可以参考下
资源推荐
资源详情
资源评论
Oracle数据库中数据库中ORDER BY排序和查询按排序和查询按IN条件的顺序输出条件的顺序输出
主要介绍了Oracle数据库中ORDER BY排序和查询按IN条件的顺序输出的方法,其中ORDER BY的排序结果需要注
意其是否稳定,需要的朋友可以参考下
ORDER BY非稳定的排序非稳定的排序
提一个问题: oracle在order by 排序时,是稳定排序算法吗? 发现用一个type进行排序后,做分页查询,第一页的数据和第二页
的数据有重复 怀疑是order by 时,两次排列的顺序不一致
看到业务描述的问题可以得到的结论order by排序不稳定,还有第一个印象就是,type肯定是不唯一的,并且没有索引吧。
这里先科普下排序的稳定性,举个最简单的例子,1,2,3,1,4,5 排序 排序的结果是1,1,2,3,4,5,这时候观察这个1,如果第一个1还
是排序前的那个1,那么算法是稳定的。也就是说相等数在排序后不发生交换。
还记得以前数据结构中的几种排序算法:
选择排序复杂度为n*n,不稳定排序,
快速排序复杂度为n*n,不稳定排序,
希尔排序复杂度为nlogn,不稳定排序,
堆排序复杂度为nlogn,不稳定排序,
冒泡排序复杂度为n*n,稳定排序,
插入排序复杂度为n*n,稳定排序,
归并排序复杂度为nlogn,稳定排序
基数排序的复杂度和位数是有关的,是稳定排序。
好了回到正题,本机测试,插入几条测试数据,表结构就两个字段,id和name,没有索引
SELECT ROWNUM,ZZ_TEST.* FROM ZZ_TEST;
1 2 test
2 2 test
3 3 test
4 4 test
5 1 test
可以看到,默认差的时候是是按照rownum排序的。
然后按照name排序,
SELECT ROWNUM,ZZ_TEST.* FROM ZZ_TEST ORDER BY ZZ_TEST."name"
1 2 test
2 2 test
5 1 test
4 4 test
3 3 test
可以看到,排列的顺序不是按照rownum来排序了。
这里再插入一个知识,如何在oracle里查看执行计划,我敲了半天的explain 发现没有用。。。
原来是这么看的,而且消息要比mysql详细多了。:
select * from table(dbms_xplan.display());
-------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 8 | 16 (7)| 00:00:01 |
| 1 | SORT ORDER BY | | 1 | 8 | 16 (7)| 00:00:01 |
| 2 | COUNT | | | | | |
| 3 | TABLE ACCESS FULL| ZZ_TEST | 1 | 8 | 15 (0)| 00:00:01 |
-------------------------------------------------------------------------------
好了,那么排序和索引有没有关系呢?
我们先在type上面加一个索引试试,这里我清空了重新插入了5个数据
SELECT ROWNUM,ZZ_TEST.* FROM ZZ_TEST ORDER BY ZZ_TEST."name"
资源评论
weixin_38628429
- 粉丝: 7
- 资源: 913
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Xshell 7.0.0008
- 绘图5.vsd
- DEA模型大全(DEAp2.1、DEAslover、MAXDEA、三阶段DEA模型))
- C语言的基于MQTT协议的物联网健康监测系统源码+文档说明.zip
- 一些传统推荐算法的实现,包括基于内容的推荐,协同过滤,矩阵分解+源代码+文档说明
- Delphi 基本概念介绍+Delphi 快速入门+Delphi 2.0 的可视化部件用法简介
- 基于MQTT协议的物联网健康监测系统源代码+文档说明(高分项目).zip
- Java编程入门:掌握基础,构建现代应用.zip
- ventoy-1.0.32.zip
- Py毕业设计-校园二手交易平台小程序成品源码-LW-PPT.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功