2014-09-04 45 views

回答

1

的IOT不是索引的表,它表。

它與(B-tree)索引具有相同的結構,但不包含指向表的rowid,它包含整行。

這有一個副作用,那就是該表中的記錄沒有永久的rowid(因爲它們會在索引重新組織時移動)。如果你想在IOT上構建額外的索引,這是一個問題。它通過使用擴展的rowid來解決:輔助索引包含一個rowid,但如果它不再有效,它還包含主鍵,以便您仍可以識別該行。

2

IOT是存儲在B樹索引結構的變體中。在堆組織的表格中,行插入在適合的位置。在索引組織的表中,行存儲在表的主鍵上定義的索引中。 B樹中的每個索引條目還存儲非鍵列值。因此,索引是數據,數據是索引。應用程序使用SQL語句操縱索引組織的表,就像堆組織的表一樣,使用SQL語句。

對於索引組織表格的類比,假設人力資源經理擁有紙箱的書籍案例。每個盒子都標有數字1,2,3,4等等,但盒子並不按順序放在架子上。相反,每個盒子都包含一個指向序列中下一個盒子的盒子位置的指針。

包含員工記錄的文件夾存儲在每個框中。這些文件夾按員工ID排序。員工國王ID爲100,這是最低的ID,因此他的文件夾位於框1的底部。員工101的文件夾位於100的頂部,102位於101的頂部,依此類推,直到框1已滿。序列中的下一個文件夾位於方框2的底部。

在此類推中,按員工ID排序文件夾可以高效搜索文件夾而無需維護單獨的索引。假設用戶請求員工107,120和122的記錄。管理員可以按順序搜索文件夾並檢索找到的每個文件夾,而不是在一個步驟中搜索索引並在單獨的步驟中檢索文件夾。

索引組織表提供了通過主鍵或鍵的有效前綴更快地訪問錶行。葉片塊中行的非關鍵列的存在避免了額外的數據塊I/O。例如,員工100的工資存儲在索引行本身中。另外,因爲行以主鍵順序存儲,主鍵或前綴的範圍訪問涉及最小的塊I/O。另一個好處是避免了單獨主鍵索引的空間開銷。

欲瞭解更多,請閱讀Overview of IOT