oracle索引中存储的是rowid和值。在postgresql中,OID(对象标识符)用来在整个数据库集簇中唯一地标识一个数据库对象,这个数据库对象可以是数据库、表、索引、视图、类型等。是不是相当于oracle的rowid?不知道pg的索引存的是不是oid和值?望解惑,谢谢!
存的是ctid, 以及索引字段的值。
ctid包含了blockID, itemID的信息,检索到块,从而检索到块的linepoint,linepoint记录了行在块内的OFFSET,最终检索到行。
用pageinspect可以观察到。
例如:
postgres=# select * fro m bt_page_items('idx_t',100);
itemoffset | ctid | itemlen | nulls | vars | data
------------+-----------+---------+-------+------+-------------------------
1 | (160,75) | 16 | f | f | 8b 8d 00 00 00 00 00 00
2 | (158,161) | 16 | f | f | 1d 8c 00 00 00 00 00 00
3 | (158,162) | 16 | f | f | 1e 8c 00 00 00 00 00 00
4 | (158,163) | 16 | f | f | 1f 8c 00 00 00 00 00 00
5 | (158,164) | 16 | f | f | 20 8c 00 00 00 00 00 00
6 | (158,165) | 16 | f | f | 21 8c 00 00 00 00 00 00
7 | (158,166) | 16 | f | f | 22 8c 00 00 00 00 00 00
8 | (158,167) | 16 | f | f | 23 8c 00 00 00 00 00 00
9 | (158,168) | 16 | f | f | 24 8c 00 00 00 00 00 00
10 | (158,169) | 16 | f | f | 25 8c 00 00 00 00 00 00
11 | (158,170) | 16 | f | f | 26 8c 00 00 00 00 00 00
12 | (158,171) | 16 | f | f | 27 8c 00 00 00 00 00 00
13 | (158,172) | 16 | f | f | 28 8c 00 00 00 00 00 00
14 | (158,173) | 16 | f | f | 29 8c 00 00 00 00 00 00
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。