Oracle rowid and urowid
来源:互联网 发布:游泳 肌肉 知乎 编辑:程序博客网 时间:2024/06/05 06:40
在Oracle内部,每个数据表都有一个伪列ROWID,用于存放被称为ROWID的二进制值。每个ROWID代表了一行数据的存储地址。物理ROWID能够标识普通数据表中的一行信息。其中ROWID类型只能存储物理内容,而UROWID(universal rowid)类型可以存储物理,逻辑或外来(non-Oracle)ROWID。
物理ROWID(PhysicalRowid)可以让我们快速的访问某些特定的行。只要行存在,它的物理ROWID就不会改变。高效稳定的物理ROWID在查询行集合、操作整个集合和更新子集是很有用的。例如,我们可以在UPDATE或DELETE语句的WHERE子句中比较UROWID变量和ROWID伪列来找出最近一次从游标中取出的行数据。
Rowid 使用6363的方式编码
OOOOOOFFFBBBBBBRRR这样的形式有四部分组成:
- "000000"代表数据对象号(data object number),如上例中的"AAAAqc",能够辨识数据库段。同一段中的模式对象,都有着相同的数据对象号。
- "FFF"代表文件号(file number),如上例中的"AAB",能辨识出包含行的数据文件。在数据库中,文件号是唯一的。
- "BBBBBB"代表块号(block number),如上例中的"AAADFN",能辨识出包含行的数据块。块号是与它们所在的数据文件相关,而不是表空间。所以,两个在同一表空间的行数据,如果它们处于不同的数据文件中,也可能有着相同的块号。
- "RRR"代表了行号(row number),如上例中的"AAH",可以辨识块中的行数据。
#根据rowid抽块对像编号
select dbms_rowid.rowid_object(ROWID)FROM tmp_test WHEREROWNUM <=1
#根据rowid抽取表空间相对文件号
selectdbms_rowid.rowid_relative_fno(ROWID)FROM tmp_test WHEREROWNUM <=1
#根据rowid抽取块号
select dbms_rowid.ROWID_BLOCK_NUMBER(ROWID)FROM tmp_test WHEREROWNUM <=1
#根据rowid抽取行号
select dbms_rowid.rowid_row_number(ROWID)FROM tmp_test WHEREROWNUM <=1
注意:这里取到的ROW_NUMBER是从0开始的
- Oracle rowid and urowid
- Oracle rowid urowid
- Oracle rowid urowid[精读]
- 关于RowId RowNum uRowId的区别
- oracle rowid and postgresql ctid
- oracle rowid
- ORACLE ROWID
- Oracle RowID
- ORACLE ROWID
- Oracle ROWID
- Oracle ROWID
- oracle rowid
- ORACLE-rowid
- Oracle ROWID
- Oracle rowid
- Oracle ROWID
- Oracle ROWID
- Oracle rowid
- linux驱动学习--第二十二天:第十二章:Linux 字符设备驱动综合实例(三)DSP HPI 的设备驱动
- Isolation Level
- 近几年,产品经理这个岗位越来越火(2012-2013)
- Android 使用Jsoup解析HTML页面
- image classification 资源摘录
- Oracle rowid and urowid
- 数学专项number_theory:UVa 756
- gcc 编译多个源文件
- Xcode4.6 开发 metaio 增强现实 项目(一)--新建项目
- 如何更好的阅读代码(1)
- IE与Firefox对javascript兼容性问题
- Android之Service与IntentService的比较
- 计算的极限(续)
- LeetCode_Unique Path II