版权声明:个人随笔,实用你就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快速分页解析的更多相关文章

  1. MySQL大数据量快速分页实现(转载)

    在mysql中如果是小数据量分页我们直接使用limit x,y即可,但是如果千万数据使用这样你无法正常使用分页功能了,那么大数据量要如何构造sql查询分页呢?     般刚开始学SQL语句的时候,会这 ...

  2. 这个东西,写C++插件的可以用到。 RapidJSON —— C++ 快速 JSON 解析器和生成器

    点这里 原文: RapidJSON —— C++ 快速 JSON 解析器和生成器 时间 2015-04-05 07:33:33  开源中国新闻原文  http://www.oschina.net/p/ ...

  3. MVC快速分页

    .NET手记-ASP.NET MVC快速分页的实现   对于Web应用,展示List是很常见的需求,随之而来的常见的分页组件.jQuery有现成的分页组件,网上也有着大量的第三方分页组件,都能够快速实 ...

  4. Autoit 实现word拆分页解析 (python同理)

    Autoit 实现word拆分页解析 (python同理) 背景 之前一直在做相关工作,由于没有找到解决最佳解决方案,老办法思路是 python先将word 转成pdf,按照页码 提取文字,从而实现w ...

  5. ssm+maven+pageHelper搭建maven项目实现快速分页

    ssm+maven+pageHelper搭建maven项目实现快速分页 PageHelper分页使用: 插件的环境引入: 1.pom文件中引入分页插件的资源位置: <dependency> ...

  6. .NET手记-ASP.NET MVC快速分页的实现

    对于Web应用,展示List是很常见的需求,随之而来的常见的分页组件.jQuery有现成的分页组件,网上也有着大量的第三方分页组件,都能够快速实现分页功能.但是今天我描述的是用基本的C#和html代码 ...

  7. 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案

    如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案

  8. MySQL 百万级分页优化(Mysql千万级快速分页)(转)

    http://www.jb51.net/article/31868.htm 以下分享一点我的经验 一般刚开始学SQL的时候,会这样写 复制代码 代码如下: SELECT * FROM table OR ...

  9. MySQL 百万级分页优化(Mysql千万级快速分页)

    以下分享一点我的经验 一般刚开始学SQL的时候,会这样写 : SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 : ...

随机推荐

  1. checkbox在vue中的用法总结

    前言 关于checkbox多选框是再常见不过的了,几乎很多地方都会用到,这两天在使用vue框架时需要用到checkbox多选功能,实在着实让我头疼,vue和原生checkbox用法不太一样, 之前对于 ...

  2. Apollo 1 融合 Spring 的三个入口

    前言 Spring 作为 Java 世界非官方标准框架,任何一个中间件想要得到良好的发展,必须完美支持 Spring 的各种特性,即:无缝融入 Spring. Apollo 作为分布式配置中心,服务于 ...

  3. jQuery中的事件绑定的几种方式

    jQuery目前有on(),bind(),delegate(),live()四种绑定方式,但是随着版本的不断更新,有的方式也相应的被淘汰掉 [band()方式绑定] 3.0版本之前的绑定方式比较常用的 ...

  4. 使用Nexus2.x为Maven3.x搭建私服构件仓库

    前言 在笔者的前一篇博文<Use Maven3.x>中,笔者详细的讲解了如何通过使用Maven3.x来构建及管理你的项目.其中笔者提到过些关于私服的概念,但却没有明确的对私服做出详细的阐述 ...

  5. 【WebSocket No.1】实现服务端webSocket连接通讯

    前言 现阶段socket通信使用TCP.UDP协议,其中TCP协议相对来说比较安全稳定!本文也是来讲解TCP为主(恕在下学艺不精). 下面是个人理解的tcp/ip进行通讯之间的三次握手! 1.客户端先 ...

  6. 近乎产品MVC架构介绍-多租户模式

    应用的数据部分支持多租户,租户可以是呈现区域(PersentArea)也可以是另一个应用.在数据库设计方面采用最简单的方式,在应用数据表中增加TenantTypeId(存储对应的Application ...

  7. webpack4 系列教程(一): 打包JS

    webpack 本身就是为了打包js所设计,作为第一节,介绍怎么打包js. 1. 检验webpack规范支持 webpack支持es6, CommonJS, AMD. 创建vendor文件夹,其中mi ...

  8. fullScreen.html

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  9. linux学习笔记-安装配置使用clamav杀毒软件

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 1.安装clamav 2.更新病毒库 # freshclam 如果更新不了,或者更新特别慢,可以手动下载病毒库文件,放到/var ...

  10. REM在edge浏览器中不重新计算解决

    经过多分析和排查,此问题解决的方案 第一种: 在CSS样式中添加 body { font-size:100% } 如果不起作用,可以尝试将引用的REMjs放在head内引用