我們知道一般的表都以堆(heap)的形式來組織的,這是無序的組織方式。
oracle還提供了一種有序的表,它就是索引組織表,簡稱iot表。iot表上必須要有主鍵,而iot表本身不對應segment,表裡所有的資料都存放在主鍵所在的索引的葉子節點裡。
換句話說,在索引葉子節點裡的索引條目裡不僅存放了被索引的列的值,還同時存放了其他列的值。
對於總是通過主鍵訪問資料的表來說,比較適合使用iot表。如果使用普通表,則通過主鍵索引訪問表時,至少要讀取兩個資料塊:乙個索引塊,另乙個是表的資料塊。
而如果通過iot表,由於表的資料就存放在索引塊中,所以只需要讀取乙個塊即可。iot表時虛擬表,但是他具有普通表所有的特性。
而且儘管iot表的資料實際存放在索引segment裡,但是我們還是可以在iot表的基礎上,在其他列上再次建立索引,這種索引我們叫二級索引。
使用二級索引查詢資料時,存在以下兩個階段:
1,物理猜測:根據二級索引裡記錄的物理rowid,去掃瞄其指向的iot表所依附的索引segment裡的索引節點。
2,邏輯猜測:由於iot表的資料存放在索引的葉子節點裡,而由於在索引裡資料都是有序存放的,資料會子會在葉子節點中間插入,因此就存在向葉子節點的拆分問題。一旦葉子節點被拆分,資料所在的索引塊就會變化,那麼二級索引所指向的位置也就錯誤了。通過物理rowid去訪問iot表就找不到資料。這個時候,oracle會進行邏輯猜測,這時就不使用rowid了,而是使用主鍵列的值去掃瞄iot表。
建立iot表的例子如下:
create table iot_test(id number,c1 varchar2(40),c2 varchar2(40),c3 varchar2(40),c4 varchar2(40),primary key(id)) organization index
sql> select object_name,object_type from user_objects;
object_name object_type
sys_iot_top_96480 index
iot_test table
我們定義的iot表時,必須建立乙個主鍵約束,然後指定organization index選項,可以同時指定主鍵對應的索引所在的表空間名稱。
從上面的例子中,假設經常訪問的列id和c1這兩個列,則如果把其他的c2,c3,c4列也放在索引塊裡,會比較浪費空間。因為這三列並不經常被訪問,沒有必要把他們與id,c1放在一起。於是我麼就可以通過設定pctthreshold和including這兩個屬性,從而只在索引塊裡存放id和c1,而且他的三列在放入overflow裡,(overflow是一種segment).
pctthreshold說明留在索引塊裡的資料空間佔總資料塊大小的百分比,從0到50%。假設在iot_test表中,id列和c1列總共大概需要400個位元組,索引塊大小為8kb,我們希望id列和c1列留在索引塊裡。則留在索引塊裡的資料佔整個索引塊大小的5%(500/8192),於是可以將pctthreshold設定為5.我們還可以使用including,對於上面的例子來說,including c2表示從c2列開始,後面所有的列(也就是c2,c3,c4這三列)都放到overflow裡。優先考慮pctthreshold,也就是說如果id列的值佔資料塊大小的百分比已經超過了指定的pctthreshold,則儘管指定的是從c2列開始後面的所有列都放入overflow,但是由於違反了pctthreshold,則c1以後的列也都全部放入overflow裡(即c1,c2,c3,c4都放入overflow裡)
mysql iot表:
iot表 (sn,a1,a2,a3) sn上有主鍵 這個主鍵存放了sn,a1,a2,a3的資料
那麼我在a1上在建立索引test_idx1 那麼test_idx1包含哪些資料
a1,sn這樣排列的應該
通過sn來回表
dns mysql DNSlog實現Mysql注入
step1 通過dnslog盲注需要用到load file 函式。show variables like secure 檢視load file 可以讀取的磁碟。1 當secure file priv為空,就可以讀取磁碟的目錄。2 當secure file priv為g 就可以讀取g盤的檔案。3 當s...
索引組織表IOT
索引組織表iot 第十章 資料庫表 索引組織表 index organized table,iot 就是儲存在乙個索引結構中的表。儲存在堆中的表是無組織的 也就是說,只要有可用的空間,資料可以放在任何地方 iot中的資料則按主鍵儲存和排序。對你的應用來說,iot表和乙個 常規 表並無二致。iot有什...
iot 堆表 與普通表
普通表與堆表測試對比 drop table heap create table heap a varchar2 30 b varchar2 30 c varchar2 30 constraint heap pk primary key a,b drop table iot create table ...