rowid快速分页解析
版权声明:个人随笔,实用你就COPY,看不懂不解释 https://blog.csdn.net/HelloCqk1/article/details/36628787
--分页第一步 获取数据物理地址
select t.rowid rid, t.lastdate from t_test t order by t.lastdate desc;
--分页第二步 取得最大页数
select rownum rn, rid
from (select t.rowid rid, t.lastdate
from t_test t
order by t.lastdate desc)
where rownum <= 10;
--分页第三步 取得最小页数
select rn,rid
from (select rownum rn, rid
from (select t.rowid rid, t.lastdate from t_test t order by t.lastdate desc)
where rownum <= 10)
where rn > 5;
--分页第四步 再依据物理地址。查询出详细数据
select t1.*,t1.rowid
from t_test t1
where t1.rowid in
(select rid
from (select rownum rn, rid
from (select rowid rid, t.lastdate from t_test t order by t.lastdate desc)
where rownum <= 10000)
where rn > 5000);
在8i曾经rowid由file#+block#+row# 组成,占用6个bytes的空间,10 bit的file# 。22 bit 的block#,16 bit 的row#。
当中oracle的dba(data block address)是32 bits的,包含10 bit 的 file# 和 22 bit 的block#。
因为不存在0编号文件。oracle中的文件最大数量2^10-1=1023
而datafile能达到的最大size就是2^22*db_block_size
假设db_block_size为4k的datafile max size就是16G
假设db_block_size为8k的datafile max size就是32G
从oracle 8開始rowid变成了extend rowid,由data_object_id#+rfile#+block#+row#组成,占用10个bytes的空间,
32bit的 data_object_id#,10 bit 的 rfile#,22bit 的 block#,16 bit 的 row#.因为rowid的组成从file#变成了rfile#。
所以数据文件数的限制也从整个库不能超过1023个变成了每一个data_object_id不能超过1023个数据文件。当然,你也许要问。
为什么oracle不调整rowid中表示 file# 的 bit数量,这个应该是因为兼容性的引起的。在 oracle7 的索引中存储的rowid
就是 file# + block# + row# 。因为这样处理后关于索引的存储,oracle8和oracle7没有发生变化。
尽管oracle使用了extend rowid,可是在普通索引里面依旧存储了bytes的rowid,仅仅有在global index中存储的是10bytes
的extend rowid,而extend rowid也是global index出现的一个必要条件。
1. rowid基本概念:
1) rowid是一个伪列,是用来确保表中行的唯一性,它并不能指示出行的物理位置。但能够用来定位行
2) rowid是存储在索引中的一组既定的值(当行确定后)。
我们能够像表中普通的列一样将它选出来
3) 利用rowid是訪问表中一行的最快方式
4) rowid须要10个字节来存储,显示为18位的字符串。
2. 什么情况下rowid会发生变化
一般来说。当表中的行确定后,rowid就不会发生变化。 但当例如以下情况发生时,rowid将发生改变:
1) 对一个表做表空间的移动后
2) 对一个表进行了EXP/IMP后
rowid快速分页解析的更多相关文章
- MySQL大数据量快速分页实现(转载)
在mysql中如果是小数据量分页我们直接使用limit x,y即可,但是如果千万数据使用这样你无法正常使用分页功能了,那么大数据量要如何构造sql查询分页呢? 般刚开始学SQL语句的时候,会这 ...
- 这个东西,写C++插件的可以用到。 RapidJSON —— C++ 快速 JSON 解析器和生成器
点这里 原文: RapidJSON —— C++ 快速 JSON 解析器和生成器 时间 2015-04-05 07:33:33 开源中国新闻原文 http://www.oschina.net/p/ ...
- MVC快速分页
.NET手记-ASP.NET MVC快速分页的实现 对于Web应用,展示List是很常见的需求,随之而来的常见的分页组件.jQuery有现成的分页组件,网上也有着大量的第三方分页组件,都能够快速实 ...
- Autoit 实现word拆分页解析 (python同理)
Autoit 实现word拆分页解析 (python同理) 背景 之前一直在做相关工作,由于没有找到解决最佳解决方案,老办法思路是 python先将word 转成pdf,按照页码 提取文字,从而实现w ...
- ssm+maven+pageHelper搭建maven项目实现快速分页
ssm+maven+pageHelper搭建maven项目实现快速分页 PageHelper分页使用: 插件的环境引入: 1.pom文件中引入分页插件的资源位置: <dependency> ...
- .NET手记-ASP.NET MVC快速分页的实现
对于Web应用,展示List是很常见的需求,随之而来的常见的分页组件.jQuery有现成的分页组件,网上也有着大量的第三方分页组件,都能够快速实现分页功能.但是今天我描述的是用基本的C#和html代码 ...
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案
如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案
- MySQL 百万级分页优化(Mysql千万级快速分页)(转)
http://www.jb51.net/article/31868.htm 以下分享一点我的经验 一般刚开始学SQL的时候,会这样写 复制代码 代码如下: SELECT * FROM table OR ...
- MySQL 百万级分页优化(Mysql千万级快速分页)
以下分享一点我的经验 一般刚开始学SQL的时候,会这样写 : SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 : ...
随机推荐
- Deep learning with Python 学习笔记(10)
生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...
- 使用centos 7安装conpot
使用CentOS的版本7.3和Conpot 0.5.1(也可能适用于其他CentOS的版本) 1.通过ssh登录系统,并需要具有足够的系统特权(e.g root) 2.系统升级 yum -y upda ...
- U3D MonoBehaviour
一.简介 MonoBehaviour是每个脚本派生类的基类,它定义了一个脚本文件从最初被加载到最终被销毁的一个完整过程. 这个过程通过对应的方法体现出来,在不同的方法完成不同的功能,我们把这些方法称为 ...
- tensorflow实现循环神经网络
包括卷积神经网络(CNN)在内的各种前馈神经网络模型, 其一次前馈过程的输出只与当前输入有关与历史输入无关. 递归神经网络(Recurrent Neural Network, RNN)充分挖掘了序列数 ...
- MAC ACL、RACL和VACL
拓扑结构: 配置IP地址.VLAN及路由: SW1(config)#int range f0/1 - 2SW1(config-if-range)#switchport mode accessSW1(c ...
- XCode - App installation failed (A valid provisioning profile for this executable was not found)
OSX:10.14 XCode:10.1 iPhone:iPhone 4S IOS9.3.5 我不得不骂那些SB们,不懂就别TMD乱写文章,误导别人!!我今天看了很多关于这个错误的中文文章,结果都没能 ...
- 使用Java解析XML
一.解析的对象 <?xml version="1.0" encoding="UTF-8"?> <users> <user id=& ...
- Java 开源博客 Solo 1.8.0 发布 - 改进文件上传
本次发布主要是更新了编辑器,使其更好地支持文件上传.(1.8.0 版本变更记录请看这里) 我们的 Markdown 编辑器: 另外,我们对 HTTPS 的支持也更完善了,欢迎大家试用! 简介 Solo ...
- 超级干货 :一文读懂数据可视化 ZT
前言 数据可视化,是指将相对晦涩的的数据通过可视的.交互的方式进行展示,从而形象.直观地表达数据蕴含的信息和规律. 早期的数据可视化作为咨询机构.金融企业的专业工具,其应用领域较为单一,应用形态较为保 ...
- JavaScript大杂烩14 - 使用JQuery(上)
JQuery意义 - Why? 为什么要使用JQuery,从我个人来说,就是这么几点:简化代码 + 统一行为 + 功能强大 + 搭配方便. 简化代码是从写代码的角度来说的,实现同样的功能,如果用Jav ...