oracle中的rowid简介

oracle中的rowid是表的一个默认伪列,主要用于行的快速定位。oracle的索引就是通过rowid来查找相应的数据。rowid在一行创建之后值就确定下来,除了以下情况外这个值基本不变,
1.表空间的移动
2.表exp/imp

rowid结构:
oracle8版本之前,占用6个字节,10bit的file#,22bit的block#,16bit的row#.
oracle8版本之后,占用10字节,用base64编码,显示为18位的字符串,6位字符串的data object number,3位字符串的relative file number,6位字符串的block number,3位字符串的row number。
select t.rowid from sms_batch_log t where rownum=1;

------------------
AAAWBUAAEAAN4qMAAA

这里注意rownum是用于确定行号,rownum=1是第一行记录,如果要显示大于第一行记录的话要用rownum<n (表示前n-1行记录),注意不能用n>1,oracle默认不支持大于1的rownum查询,具体原因可以有待搜索查询。

上面的查询语句是第一行记录的rowid,
AAAWBU表示data object number
AAE表示relative file number
AAN4qM表示block number
AAA表示row number

rowid是查询特定行最快的方法,直接定位到数据块。

待续。。。。

你可能感兴趣的:(数据结构,oracle)