IOT表和堆組織表

來源:互聯網
上載者:User

 堆組織表Oracle裡建立普通表的一種組織圖 

 

比如 
我們建立這樣一個表 
create table test_iot 
( id int primary key, 
value varchar2(100) 

 

這裡就是一個普通的堆組織表,

建表的時候會為主鍵id上建立基於B+樹的索引,不過只對該列的資料進行索引,而不會在index裡有value的資訊,並且對於資料的儲存來說無,是無序的資料集合。 

SQL> insert into test_iot values(1, '1'); 
1 row created. 
SQL> insert into test_iot values(2, '1'); 
1 row created. 
SQL> insert into test_iot values(4, '1'); 
1 row created. 
SQL> insert into test_iot values(3, '1'); 
1 row created. 

SQL> select * from test_iot; 

ID VALUE 
---------- ---------- 
1 1 
2 1 
4 1 
3 1 

我們可以插入資料看看,這個插入的順序是無序的。 

索引組織表(IOT)有一種類B樹的儲存群組織方法。普通的堆組織表是以一種無序的集合儲存。而IOT中的資料是按主鍵有序的儲存在B樹索引結構中。與一般B樹索引不同的的是,在IOT中每個葉結點即有每行的主鍵列值,又有那些非主鍵列值。Oracle裡通過organization index來指定是一個IOT 

create table test_iot_1 
( id int primary key, 
value varchar2(100) 

organization index; 

SQL> insert into test_iot_1 values(1, '1'); 
1 row created. 
SQL> insert into test_iot_1 values(3, '1'); 
1 row created. 
SQL> insert into test_iot_1 values(2, '1'); 
1 row created. 
SQL> insert into test_iot_1 values(5, '1'); 
1 row created. 

SQL> select * from test_iot_1; 

ID VALUE 
---------- ---------- 
1 1 
2 1 
3 1 
5 1 

這裡已經有順序了 

這裡在Rowid上兩者也因為組織圖的不同導致差異 
對於普通的堆表用的物理Rowid,而IOT表是用的邏輯Rowid 

SQL> select a.*, rowid from test_iot a; 

ID VALUE ROWID 
---------- ---------- ------------------ 
1 1 AAALmBAAOAAAaXCAAA 
2 1 AAALmBAAOAAAaXCAAB 
4 1 AAALmBAAOAAAaXCAAC 
3 1 AAALmBAAOAAAaXCAAD 

SQL> select a.*, rowid from test_iot_1 a; 

ID VALUE ROWID 
---------- ---------- -------------------- 
1 1 *BAOBpboCwQL+ 
2 1 *BAOBpboCwQP+ 
3 1 *BAOBpboCwQT+ 
4 1 *BAOBpboCwQX+ 
5 1 *BAOBpboCwQb+ 

IOT的結構也決定了其在某些方面優於堆組織表 

 

IOT表主鍵和值在一起,主鍵不需要被儲存兩次,節省空間的

IOT索引項目和資料存放區在一起,所以我們提到的主鍵覆蓋在IOT裡已經是可以達到了,主鍵裡已經帶了其他欄位的資訊,所以查詢非主鍵覆蓋的情況下能大大節省磁碟存取時間。 

由於IOT已經是有序的結構,所以定位明顯比普通的對組織表要快。一來便可以得到更小的B樹,以及包含更多行的葉結點 

相關文章

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.