Oracle複合B*tree索引branch block內是否包含非先導列索引值?,branchblock

來源:互聯網
上載者:User

Oracle複合B*tree索引branch block內是否包含非先導列索引值?,branchblock

好久不碰資料庫底層細節的東西,前幾天,一個小傢伙跑來找我,非要說複合b*tree index branch block中只包含先導列鍵值資訊,並不包含非先導列鍵值資訊,而且還dump了branch block,用以證明他的說法,從常理和SQL的語句執行資訊就可以知道,他的說法是有問題的,但如何證明這一點呢?為了證明這點,也麻煩一次,玩玩多年不碰的dump。下面是他證明自己觀點的兩個dump結果(一個為單鍵索引,另一個是複合索引):




下面是本人的測試過程和結果:

create table t1(c1 int,c2 int,c3 int,c4 char(2000),c5 char(2000));

create index t1_idx1 on t1(c1,c2,c3,c4,c5);

begin

for i in 1..1000 loop
insert into t1 values(0,0,i,'aa','aa');
end loop;
end;
/

begin
for i in 1001..2000 loop
insert into t1 values(0,i,i,'bb','bb');
end loop;
end;
/

select segment_name,file_id,block_id 
  from dba_extents 
 where segment_name='T1_IDX1'
   and extent_id=0;


alter system dump datafile 4 block 195;

trc檔案內容:


由此可見,複合b*tree index branch block中,有時不包含非先導列鍵值,但有時包含。那麼,什麼情況下包含,什麼情況下不包含呢?實驗結果為,當先導列鍵值的選擇性足夠好時,就無需包含非先導列的鍵值,不然,也是浪費branck block寶貴的空間;只有當先導列的鍵值選擇性不足夠好,必須結合非先導列的鍵值才能定位到下一級block時,才需要包含非先導列的鍵值,該測試過程此處略去,感興趣的同學可以按照這個思路自己測試。



問一下ORACLE的位元影像索引與B*tree索引的實現原理是怎的?

1、文法
create bitmap index index_name on 表名(欄位);
2、舉個例子你就能明白了:
如有表 test(id,name,address)
資料
(1,張三,大連)
(2,李四,天津)
(3,王五,北京)
(4,趙六,大連)
....

類似這樣的資料,如果查詢的時候用到 ,因為資料庫中有很多這樣的資料,所以一般的索引起不到查詢加速的作用,而建立位元影像索引後會產生如下點陣圖效果:
假設有4條資料(就如上所示)

大連 天津 北京
1 0 0
0 1 0
0 0 1
1 0 0

這樣當查詢:
select * from 表 where address='大連' or address='北京';
的時候資料庫很快就能根據 同行的 1和0 判斷出那一條資料符合要求。

---
以上,希望對你有所協助。
 
oracle的b-tree索引為何是加not null約束?

用索引提高效率: 索引是表的一個概念部分,用來提高檢索資料的效率,ORACLE使用了一個複雜的自平衡B-tree結構. 通常,通過索引查詢資料比全表掃描要快. 當
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.