国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

各種索引的結(jié)構(gòu)分析 降序索引和位圖索引

2024-07-21 02:33:44
字體:
供稿:網(wǎng)友
    降序索引    降序索引是8i里面新出現(xiàn)的一種索引,是B*Tree的另一個(gè)衍生物,它的變化就是列在索引中的儲(chǔ)存方式從升序變成了降序,在某些場合下降序索引將會(huì)起作用。舉個(gè)例子,我們來查詢一張表并進(jìn)行排序: SQL> select * from test where a between 1 and 100 order by a desc,b asc;    已選擇100行。Execution Plan
----------------------------------------------------------
   0    SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=100 Bytes=400)
   1  0  SORT(ORDER BY)(Cost=2 Card=100 Bytes=400)
   2  1 INDEX (RANGE SCAN) OF 'IND_BT' (NON-UNIQUE) (Cost=2 Card=100 Bytes=400)    這里優(yōu)化器首先選擇了一個(gè)索引范圍掃描,然后還有一個(gè)排序的步驟。假如使用了降序索引,排序的過程會(huì)被取消。SQL> create index test.ind_desc on test.testrev(a desc,b asc);    索引已創(chuàng)建。SQL> analyze index test.ind_desc compute statistics;    索引已分析    再來看下執(zhí)行路徑:SQL> select * from test where a between 1 and 100 order by a desc,b asc;    已選擇100行。Execution Plan(SQL執(zhí)行計(jì)劃,稍后會(huì)講解如何使用)。
----------------------------------------------------------
   0    SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=100 Bytes=400)1  0 INDEX (RANGE SCAN) OF 'IND_DESC' (NON-UNIQUE) (Cost=2 Card=100 Bytes=400)    我們看到排序過程消失了,這是因?yàn)閯?chuàng)建降序索引時(shí)Oracle已經(jīng)把數(shù)據(jù)都按降序排好了。    另外一個(gè)需要注重的地方是要設(shè)置init.ora里面的compatible參數(shù)為8.1.0或以上,否則創(chuàng)建時(shí)desc要害字將被忽略。    位圖索引    位圖索引主要用于決策支持系統(tǒng)或靜態(tài)數(shù)據(jù),不支持行級(jí)鎖定。位圖索引最好用于低cardinality列(即列的唯一值除以行數(shù)為一個(gè)很小的值,接近零),例如又一個(gè)“性別”列,列值有“Male”,“Female”,“Null”等3種,但一共有300萬條記錄,那么3/3000000約等于0,這種情況下最適合用位圖索引。    位圖索引可以是簡單的(單列)也可以是連接的(多列),但在實(shí)踐中絕大多數(shù)是簡單的。在這些列上多位圖索引可以與AND或OR操作符結(jié)合使用。位圖索引使用位圖作為鍵值,對(duì)于表中的每一數(shù)據(jù)行位圖包含了TRUE(1)、FALSE(0)、或NULL值。位圖索引的位圖存放在B-Tree結(jié)構(gòu)的頁節(jié)點(diǎn)中。B-Tree結(jié)構(gòu)使查找位圖非常方便和快速。另外,位圖以一種壓縮格式存放,因此占用的磁盤空間比B-Tree索引要小得多。位圖索引的格式如表26-1所示。    表26-1  位圖索引的格式
       行
值 1 2 3 4 5 6 7 8 9 10
Male 1 0 0 0 0 0 0 0 1 1
Female 0 1 1 1 0 0 1 1 0 0
Null 0 0 0 0 1 1 0 0 0 0    假如搜索where gender=’Male’,要統(tǒng)計(jì)性別是”Male”的列行數(shù)的話,Oracle很快就能從位圖中找到共3行即第1,9,10行是符合條件的;假如要搜索where gender=’Male’ or gender=’Female’的列的行數(shù)的話,也很輕易從位圖中找到共8行即1,2,3,4,7,8,9,10行是符合條件的。假如要搜索表的值的話,那么Oracle會(huì)用內(nèi)部的轉(zhuǎn)換函數(shù)將位圖中的相關(guān)信息轉(zhuǎn)換成rowid來訪問數(shù)據(jù)塊。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 慈溪市| 措勤县| 南雄市| 金昌市| 日土县| 孟州市| 安图县| 临邑县| 泊头市| 太仓市| 景德镇市| 苍溪县| 贡嘎县| 蒙山县| 宾阳县| 汉川市| 宁海县| 汕头市| 塔河县| 景泰县| 天气| 永康市| 新邵县| 南华县| 木兰县| 谷城县| 龙里县| 镇安县| 法库县| 井冈山市| 栾城县| 新宾| 安新县| 青浦区| 工布江达县| 承德县| 新化县| 阳山县| 中牟县| 新和县| 四川省|