索引組織表

2021-06-28 23:38:40 字數 1599 閱讀 7167

--------------------索引組織表(iot)

可以將索引和表資料一起儲存在乙個表中,該錶稱為索引組織表.

iot是在中儲存整個行的索引,而不僅僅是儲存行的鍵值。行的主鍵作為行的邏輯識別符號而不是儲存行的rowid。

iot中沒rowid。由於iot中整個行儲存為索引本身,因此沒有用於每個行的rowid,主鍵用來標識乙個iot中的行。

於此不同,oracle根據主鍵的值來建立邏輯rowid。邏輯rowid用於支援iot的二級索引。

在建立iot時,必須指定主鍵,iot可以分割槽.

iot消除了使用表和它對應的索引的需要,而使用乙個單獨的結構來替代他們,該結構看起來像索引但又像表一樣包含資料。

《在傳統的表/索引組合中,基於索引的訪問需要在索引訪問後面跟上表訪問》在iot中,只需訪問iot,沒有任何伴隨的索引。

create table sales(sales_date date,sales_id number,total_sales nubber(18,2),constraint ssbd_pk primary key(sales_date,dept_id))organization index tablespace prd04;

三列都儲存在每個iot的行中,但是只根基日期和部門編號來建立iot,只使用乙個段來儲存乙個iot,如果在該iot建立二級索引,將會建立乙個新段。

-----------------iot益處

(1)使用iot可以顯著地減少磁碟空間的使用,因為不需要儲存索引列兩次(一次儲存在表中,一次在索引中)。相反,只需將他們和其他任何非所暈的列儲存在iot中一次。

(2)在iot中,通過他們的主鍵值按順序儲存行,因此任何基於主鍵範圍查詢都會受益。因為行時按順序儲存的,此外,任何基於主鍵的相等查詢也會受益,因為表的資料全部儲存在索引中。

(3)iot適合用於基本的訪問是通過主鍵的那些表,但允許在iot的其他列上建立索引以改善通過這些列的訪問效能。

---------索引組織表提供了額外的特性:

1).溢位區域:

通過在建立iot時設定pctthreshold引數,可以分開儲存主鍵和行資料,如果行資料超出塊中的可用空間的限度。

它將動態移動到溢位區域,可以指定溢位區域位於單獨的表空間,從而改進分布與表明相關的i/o能力。

2).二級索引

可以在iot上建立二級索引。oracle將使用主鍵值作為行的邏輯。

3).減少的儲存需求:

在iot中,他們只儲存一次,從而減少儲存需求,在傳統的表/索引組合中,相同的鍵值儲存在兩個位置中。

-----------iot的調整問題

iot可能經常在內部產生儲存碎片,為了重新構建iot,可以使用alter table employee_iot move tablespace data overflow tablespace data_overflow.

應該避免在iot中儲存長度的資料,一般來說,如果資料長於資料快大小的75%,則應該避免iot,如果資料庫塊大小時4kb,並且行的長度超出3kb,則應該考慮普通表和索引的使用,而不是使用iot。

行越長,針對iot就要執行更多的事務,從而需要更頻繁地重新構建iot。

索引影響資料載入率,為了獲得最佳結果,索引組織表的主鍵索引應該和連續的值一起載入,從而最小化索引管理成本。

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

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

索引組織表IOT

索引組織表iot 第十章 資料庫表 索引組織表 index organized table,iot 就是儲存在乙個索引結構中的表。儲存在堆中的表是無組織的 也就是說,只要有可用的空間,資料可以放在任何地方 iot中的資料則按主鍵儲存和排序。對你的應用來說,iot表和乙個 常規 表並無二致。iot有什...

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

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