ORACLE堆表和索引組織表IOT優缺點

2021-06-19 10:23:08 字數 1430 閱讀 7430

堆表:

缺點:主鍵索引和表資料分離,增加資料所占用空間。可能主鍵索引的所占用的空間大於該錶所對應的空間

新增或者修改索引欄位時需要維護索引,索引還會產生日誌。

增加io次數(通過索引的rowid來查詢rowid對應塊)。

資料會按照插入行所需要的空間大小按照一定順序查詢所需要的位置,沒有一定順序。

優點:容易維護,

如果直接獲取主鍵資訊並且條件中含有字段除了主鍵欄位外沒有其他的字段,可以直接查詢索引資料

索引組織表:

缺點:優點:

主鍵索引和表資料儲存在一起,並且如果主鍵索引欄位所佔的整行的比例非常大,節省的空間非常明顯。

資料會按照一定順序儲存。

如果根據主鍵獲取對應的行,讀取的塊會盡可能的少。因為相同的主鍵的值都儲存在一起(相同主鍵的行資料插入彼此靠近的地方),減少物理io和邏輯io。

測試用例

建立索引表

create table  iot_t(

id number,

owner varchar2(30),

object_name varchar2(30), 

object_id varchar2(30) ,

constraint prk_iot_t primary key(id,owner,object_name) ) 

organization   index ;

insert into iot_t

select rownum id, t.owner,t.object_name,t.object_id from all_objects t ;

建立堆表

create table  heap_t(

id number,

owner varchar2(30),

object_name varchar2(30), 

object_id varchar2(30) ,

constraint prk_heap_t primary key(id,owner,object_name) ) ;

insert into heap_t

select rownum id, t.owner,t.object_name,t.object_id from all_objects t ;

索引組織表測試結果

堆表測試結果

明顯的物理讀一些,這些物理讀就是通過索引io產生的

create table iot_t1 (id  number,x varchar2(100),y varchar2(200), constraint prk_iot_t1 primary key (id )) 

organization index 

pctthreshold 10 including x overflow ;

如果插入行大於這個資料塊的10%,這時剩下的部分會放在一處段裡面,將id、x列放在索引表段中。

mysql堆表和索引組織 堆表與索引組織表

堆表 資料存放在資料裡面,索引存放在索引裡 堆就是無序資料的集合,索引就是將資料變得有序,在索引中鍵值有序,資料還是無序的 堆表中,主鍵索引和普通索引一樣的,葉子節點存放的是指向堆表中資料的指標 可以是乙個頁編號加偏移量 指向實體地址,沒有回表的說法 堆表中,主鍵和普通索引基本上沒區別,和非空的唯一...

Oracle效能調優 堆組織表和索引組織表區別

hot和iot的起源堆組織表的儲存速度因為不用考慮排序,所以儲存速度會比較快。但是要查詢符合某個條件的記錄,就必須得讀取全部的記錄以便篩選。而這個時候為了加快查詢速度,索引就出現了,索引是針對少量特定欄位的值拿出來進行排序儲存,並記錄在表中的位置,而因為索引是有序的,所以就會很容易通過索引查詢到具體...

堆組織表,索引組織表和索引聚簇表

1.堆組織表 通常我們預設建的表就是堆組織表。語法 create table test id int,name varchar2 10 此型別的表中,資料會以堆的方式進行管理,增加資料時候,會使用段中找到的第乙個能放下 此資料的自由空間。當從表中刪除資料時候,則允許以後的update和insert重...