设为首页 加入收藏

TOP

关于Oracle位图索引内部浅论(三)
2015-11-10 12:16:24 来源: 作者: 【 】 浏览:6
Tags:关于 Oracle 位图 索引 内部
? ? ? ? 73


SQL> select to_number('92','xxxxxxxxxxxxxx') from dual;
?TO_NUMBER('92','XXXXXXXXXXXXXX
?------------------------------
? ? ? ? ? ? ? ? ? ? ? ? ? ? 146


SQL> select to_number('24','xxxxxxxxxxxxxx') from dual;
?TO_NUMBER('24','XXXXXXXXXXXXXX
?------------------------------
? ? ? ? ? ? ? ? ? ? ? ? ? ? 36
实际上他们的十进制为73 146 36 73 146 36 73 146
我们转换为2进制然后进行取反同时不足不满8位的如下:
10010010(73) 01001001(146) 00100100(36) 10010010(73) 01001001(146) 00100100(36) 10010010(73) 01001001(146)
那么组合下来如下:
1001001001001001001001001001001001001001001001001001001001001001
其中每一个位图BIT代表一个ROWID他们是连续的,根据起始方位ROWID是能推算出来的。
?这样可以清晰的看到表中字段1的取值(实际上c1 02=1)位图如上,他们是交替出现和我表中数据一样如下:
SQL> select dbms_rowid.rowid_block_number(rowid),dbms_rowid.rowid_row_number(rowid),TESTt_bi2.*? from TESTT_BI2 where dbms_rowid.rowid_block_number(rowid)=835;
?DBMS_ROWID.ROWID_BLOCK_NUMBER( DBMS_ROWID.ROWID_ROW_NUMBER(RO NAME? ? ? ? ? ? ? ? ? ? ? ? ? ID
?------------------------------ ------------------------------ -------------------- -----------
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 2
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 3
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 2
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 3
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 6 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 7 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 2
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 8 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 3
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 9 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 10 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 2
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 11 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 3
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 12 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 13 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 2
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 14 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 3
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 15 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 16 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 2
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 17 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 3
?..........
这段如果理解一下就是
?如果SELECT * FROM TEABLE WHERE ID=1
那么这时候位图中取值为1的都是满足条件的,将会被取出(根据ROWID)


关于阅读这部分信息参考
What is 6D DB B6?
?6D = 1101101
?DB = 11011011
?B6 = 10110110
?Read from least significant bit (right to left) and left pad with zeros if not eight bits.
?The resulting map is
?10110110 11011011 01101101
?An important point is to read the bitmap from left to right in hexadecimal in two-byte
?chunks. Read each of those chunks in binary right (least significant bit) to left. If there
?are not eight bits, then these would have been in effect, leading zeros, and are treated
?as such. The underlined zero above demonstrates this.


首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇遭遇 ORA-00600: internal error .. 下一篇快照DataGuard

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·nginx 监听一个端口 (2025-12-25 00:19:30)
·整个互联网就没有一 (2025-12-25 00:19:27)
·囧次元最新官网入口 (2025-12-25 00:19:24)
·如何利用Python做数 (2025-12-24 23:48:36)
·如何使用python进行 (2025-12-24 23:48:34)