在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 應用軟件教程 > 詳細頁面

ORACLE索引使用規則

ORACLE索引使用規則

更新時間:2025-10-14 文章作者:未知 信息來源:網絡 閱讀次數:

數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應...
數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數據集合。

邏輯上:

Single column 單行索引

Concatenated 多行索引

Unique 唯一索引

NonUnique 非唯一索引

Function-based函數索引

Domain 域索引

物理上:

Partitioned 分區索引

NonPartitioned 非分區索引

B-tree:

Normal 正常型B樹

Rever Key 反轉型B樹

Bitmap 位圖索引

索引結構:

B-tree:

適合與大量的增、刪、改(OLTP);

不能用包含OR操作符的查詢;

適合高基數的列(唯一值多)

典型的樹狀結構;

每個結點都是數據塊;

大多都是物理上一層、兩層或三層不定,邏輯上三層;

葉子塊數據是排序的,從左向右遞增;

在分支塊和根塊中放的是索引的范圍;

Bitmap:

適合與決策支持系統;

做UPDATE代價非常高;

非常適合OR操作符的查詢;

基數比較少的時候才能建位圖索引;

樹型結構:

索引頭

開始ROWID,結束ROWID(先列出索引的最大范圍)

BITMAP

每一個BIT對應著一個ROWID,它的值是1還是0,如果是1,表示著BIT對應的ROWID有值;

B*tree索引的話通常在訪問小數據量的情況下比較適用,比如你訪問不超過表中數據的5%,當然這只是個相對的比率,適用于一般的情況。bitmap的話在數據倉庫中使用較多,用于低基數列,比如性別之類重復值很多的字段,基數越小越好。

B* 樹索引

這些是我所說的 “ 傳統 “ 索引。到目前為止,這是 Oracle 和大多數其他數據庫中最常用的索引。 B* 樹的構造類似于二叉樹,能根據鍵提供一行或一個行集的快速訪問,通常只需很少的讀操作就能找到正確的行。不過,需要注意重要的一點, ” B* 樹 “ 中的 ” B “ 不代表二叉( binary ),而代表平衡( b alanced )。B* 樹索引并不是一顆二叉樹,這一點在介紹如何在磁盤上物理地存儲 B* 樹時就會了解到。 B* 樹索引有以下子類型:

索引組織表( index organized table ):索引組織表以 B* 樹結構存儲。堆表的數據行是以一種無組織的方式存儲的(只要有可用的空間,就可以放數據),而 IOT 與之不同, IOT 中的數據要按主鍵的順序存儲和排序。對應用來說, IOT 表現得與 “ 常規 “ 表并無二致;需要使用 SQL 來正確地訪問 IOT 。 IOT 對信息獲取、空間系統和 OLAP 應用最為有用。 IOT 在上一章已經詳細地討論過。

B*樹聚簇索引( B*tree cluster index )這些是傳統 B* 樹索引的一個變體(只是稍有變化)。 B* 樹聚簇索引用于對聚簇鍵建立索引(見第 11. 章中 “ 索引聚簇表 “ 一節),所以這一章不再討論。在傳統 B* 樹中 ,鍵都指向一行;而 B* 樹聚簇不同,一個聚簇鍵會指向一個塊,其中包含與這個聚簇鍵相關的多行。

降序索引( descending index ):降序索引允許數據在索引結構中按 “ 從大到小 “ 的順序(降序)排序,而不是按 ” 從小到大 “ 的順序(升序)排序。我們會解釋為什么降序索引很重要,并說明降序索引如何工作。

反向鍵索引( reverse key index ):這也是 B* 樹索引,只不過鍵中的字節會 “ 反轉 “ 。利用反向鍵索引,如果索引中填充的是遞增的值,索引條目在索引中可以得到更均勻的分布。例如,如果使用一個序列來生成主鍵,這個序列將生成諸如 987500 、 987501 、 987502 等值。這些值是順序的,所以倘若使用一 個傳統的 B* 樹索引,這些值就可能放在同一個右側塊上,這就加劇了對這一塊的競爭。利用反向鍵, Oracl e則會邏輯地對 205789 、 105789 、 005789 等建立索引。 Oracle 將數據放在索引中之前,將先 把所存儲數據的字節反轉,這樣原來可能在索引中相鄰放置的值在字節反轉之后就會相距很遠。通過反轉字節,對索引的插入就會分布到多個塊上。

位圖索引( bitmap index )

在一顆 B* 樹中,通常索引條目和行之間存在一種一對一的關系:一個 索引條目就指向一行。而對于位圖索引,一個索引條目則使用一個位圖同時指向多行。位圖索引適用于高度重復而且通常只讀的數據(高度重復是指相對于表中的總行數,數據只有很少的幾個不同值)。考慮在一 個有 100 萬行的表中,每個列只有 3 個可取值: Y 、 N 和 NULL 。舉例來說,如果你需要頻繁地統計多少行有值Y ,這就很適合建立位圖索引。不過并不是說如果這個表中某一列有 11.000 個不同的值就不能建立位圖索引,這一列當然也可以建立 位圖索引。在一個 OLTP 數據庫中,由于存在并發性相關的問題,所以不能考慮使用位圖索引(后面我們就會討論這一點)。注意,位圖索引要求使用 Oracle 企業版或個人版。

位圖聯結索引( bitmap join index ):這為索引結構(而不是表)中的數據提供了一種逆規范化的 方法。例如,請考慮簡單的 EMP 和 DEPT 表。有人可能會問這樣一個問題: “ 多少人在位于波士頓的部門工作 ?“ EMP 有一個指向 DEPT 的外鍵,要想統計 LOC 值為 Boston 的部門中的員工人數,通常必須完成表聯結,將 LOC 列聯結至 EMP 記錄來回答這個問題。通過使用位圖聯結索引,則可以在 EMP 表上對 LOC 列建立索引 。

基于函數的索引( function-based index )

這些就是 B* 樹索引或位圖索引,它將一個函數計算得到的結果存儲在行的列中,而不是存儲列數據本身?梢园鸦诤瘮档乃饕醋饕粋虛擬列(或派生列)上的索引,換句話說,這個列并不物理存儲在表中。基于函數的索引可以用于加快形如 SELECT * FROM T W HERE FUNCTION(DATABASE_COLUMN) = SAME_VALUE 這樣的查詢,因為值 FUNCTION(DATABASE_COLUMN) 已經提前計算并存儲在索引中。

應用域索引( application domain index )

應用域索引是你自己構建和存儲的索引,可能存儲在Oracle 中,也可能在 Oracle 之外。你要告訴優化器索引的選擇性如何,以及執行的開銷有多大,優化器則會根據你提供的信息來決定是否使用你的索引。 Oracle 文本索引就是應用域索引的一個例子;你也可 以使用構建 Oracle 文本索引所用的工具來建立自己的索引。需要指出,這里創建的 “ 索引 “ 不需要使用傳統的索引結構。例如, Oracle 文本索引就使用了一組表來實現其索引概念。

首先,我們要確定數據庫運行在何種優化模式下,相應的參數是:optimizer_mode?稍趕vrmgrl中運行“show parameter optimizer_mode"來查看。ORACLE V7以來缺省的設置應是"choose",即如果對已分析的表查詢的話選擇CBO,否則選擇RBO。如果該參數設為“rule”,則不論表是否分析過,一概選用RBO,除非在語句中用hint強制。

查找原因的步驟

首先,我們要確定數據庫運行在何種優化模式下,相應的參數是:optimizer_mode?稍趕vrmgrl中運行“show parameter optimizer_mode"來查看。ORACLE V7以來缺省的設置應是"choose",即如果對已分析的表查詢的話選擇CBO,否則選擇RBO。如果該參數設為“rule”,則不論表是否分析過,一概選用RBO,除非在語句中用hint強制。

其次,檢查被索引的列或組合索引的首列是否出現在PL/SQL語句的WHERE子句中,這是“執行計劃”能用到相關索引的必要條件。

第三,看采用了哪種類型的連接方式。ORACLE的共有Sort Merge Join(SMJ)、Hash Join(HJ)和Nested Loop Join(NL)。在兩張表連接,且內表的目標列上建有索引時,只有Nested Loop才能有效地利用到該索引。SMJ即使相關列上建有索引,最多只能因索引的存在,避免數據排序過程。HJ由于須做HASH運算,索引的存在對數據查詢速度幾乎沒有影響。

第四,看連接順序是否允許使用相關索引。假設表emp的deptno列上有索引,表dept的列deptno上無索引,WHERE語句有emp.deptno=dept.deptno條件。在做NL連接時,emp做為外表,先被訪問,由于連接機制原因,外表的數據訪問方式是全表掃描,emp.deptno上的索引顯然是用不上,最多在其上做索引全掃描或索引快速全掃描。

第五,是否用到系統數據字典表或視圖。由于系統數據字典表都未被分析過,可能導致極差的“執行計劃”。但是不要擅自對數據字典表做分析,否則可能導致死鎖,或系統性能下降。

第六,索引列是否函數的參數。如是,索引在查詢時用不上。

第七,是否存在潛在的數據類型轉換。如將字符型數據與數值型數據比較,ORACLE會自動將字符型用to_number()函數進行轉換,從而導致第六種現象的發生。

第八,是否為表和相關的索引搜集足夠的統計數據。對數據經常有增、刪、改的表最好定期對表和索引進行分析,可用SQL語句“analyze table xxxx compute statistics for all indexes;"。ORACLE掌握了充分反映實際的統計數據,才有可能做出正確的選擇。

第九,索引列的選擇性不高。

我們假設典型情況,有表emp,共有一百萬行數據,但其中的emp.deptno列,數據只有4種不同的值,如10、20、30、40。雖然emp數據行有很多,ORACLE缺省認定表中列的值是在所有數據行均勻分布的,也就是說每種deptno值各有25萬數據行與之對應。假設SQL搜索條件DEPTNO=10,利用deptno列上的索引進行數據搜索效率,往往不比全表掃描的高,ORACLE理所當然對索引“視而不見”,認為該索引的選擇性不高。

但我們考慮另一種情況,如果一百萬數據行實際不是在4種deptno值間平均分配,其中有99萬行對應著值10,5000行對應值20,3000行對應值30,2000行對應值40。在這種數據分布圖案中對除值為10外的其它deptno值搜索時,毫無疑問,如果索引能被應用,那么效率會高出很多。我們可以采用對該索引列進行單獨分析,或用analyze語句對該列建立直方圖,對該列搜集足夠的統計數據,使ORACLE在搜索選擇性較高的值能用上索引。

第十,索引列值是否可為空(NULL)。如果索引列值可以是空值,在SQL語句中那些需要返回NULL值的操作,將不會用到索引,如COUNT(*),而是用全表掃描。這是因為索引中存儲值不能為全空。

第十一,看是否有用到并行查詢(PQO)。并行查詢將不會用到索引。

第十二,看PL/SQL語句中是否有用到bind變量。由于數據庫不知道bind變量具體是什么值,在做非相等連接時,如“<”,“>”,“like”等。ORACLE將引用缺省值,在某些情況下會對執行計劃造成影響。


全新的路由器不僅讓你更穩定快速地連接無線網絡,更可以讓家中的智能設備連接在一起。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 老太脱裤子让老头玩xxxxx| 色撸撸在线观看| 日韩av三级在线| 男人用嘴添女人下身免费视频| 美女av免费观看| 大伊香蕉精品视频在线| 无码人妻少妇伦在线电影| 日本阿v视频在线观看| 亚洲美免无码中文字幕在线 | 免费无码不卡视频在线观看| 免费无码国产v片在线观看| 精品视频一区二区在线| 亚洲天堂网2018| 特大黑人娇小亚洲女mp4| 精品成在人线av无码免费看| 亚洲中文字幕无码专区| 91女神在线观看| 欧美人与动牲交xxxxbbbb| 国产成人在线免费看| 一级做a爱视频| 国产婷婷一区二区三区| 欧美男女交配视频| 欧美另类videosbestsex日本| 男女啪啪免费视频网站| 国产精品v日韩精品v在线观看| 91.com在线| 五月花丁香婷婷| 国产精品欧美激情在线观看| 捷克做爰xxxⅹ性视频| 国产中文字幕免费观看| 色婷婷综合在线观看| 大肉大捧一进一出好爽视频| 久久最新免费视频| 日本va中文字幕| 国产淫片免费看| 日本人体一区二区| 成人一级片网站| 色综合av综合无码综合网站| 成人毛片100部免费看| 看全色黄大色大片| 蜜臀av.com| 免费午夜视频在线观看| 丝袜老师办公室里做好紧好爽| 国产91色在线观看| 在线视频观看91| 国产妇女馒头高清泬20p多| 国产一级片自拍| 夫妻免费无码v看片| 国产福利片一区二区| 国产精品天天av精麻传媒| 亚洲五码在线观看视频| 中文字幕久久av| 日韩欧美在线免费观看视频| 国产高清av在线播放| 7777在线视频| 交换做爰国语对白| 久久婷婷国产精品| 国内精品在线观看视频| 久久久99精品视频| 亚洲热在线视频| 日本不卡一区在线| 91色国产在线| 日本爱爱免费视频| 搡女人真爽免费午夜网站| 免费在线激情视频| 狠狠爱免费视频| 国产日产欧美视频| 国产91对白刺激露脸在线观看| 国产精品333| 欧美极品欧美精品欧美| 霍思燕三级露全乳照| 少妇高潮毛片色欲ava片| 超碰成人免费在线| 国产原创popny丨九色| 好吊妞无缓冲视频观看| 日韩在线xxx| 超碰在线97免费| 一区二区三区视频在线观看免费| 欧美日韩亚洲自拍| www.com污| av中文字幕av| 日本在线xxx| 人人爽人人av| 成年人网站av| 国产树林野战在线播放| 国产一区二区三区播放| 国产老熟妇精品观看| 欧美少妇性生活视频| 亚洲视频一二三四| 黄色片免费在线观看视频| 丰满爆乳一区二区三区| gogogo高清免费观看在线视频| 交换做爰国语对白| 天天夜碰日日摸日日澡性色av| 欧美 日韩 国产一区| 亚洲人视频在线| 好色先生视频污| 青青草原av在线播放| 91小视频在线播放| 老子影院午夜伦不卡大全| 超碰影院在线观看| 亚洲国产精品女人| 国产aaa一级片| 免费在线观看毛片网站| 蜜臀av性久久久久蜜臀av| 毛片在线播放视频| 日本黄网站色大片免费观看| 日韩久久久久久久久久久久| 国产成人一二三区| 国产精品12345| 国产精品无码免费专区午夜| 久久国产精品网| www国产黄色| 亚洲色图都市激情| 国产97色在线 | 日韩| 少妇熟女一区二区| 无码人妻丰满熟妇区毛片| 国产一二三四五| 三级视频中文字幕| 国产一二三区在线播放| 女同激情久久av久久| 久久久久久久久久久久久久国产| 性鲍视频在线观看| 国产一线二线三线在线观看| 97超碰人人澡| 国产免费xxx| 男生操女生视频在线观看| 99久久国产宗和精品1上映| 中文字幕日韩精品无码内射| 91精品999| 91欧美视频在线| 992kp快乐看片永久免费网址| 黄色免费观看视频网站| 亚洲精品蜜桃久久久久久| av不卡在线免费观看| 女人高潮一级片| 色乱码一区二区三区在线| 亚洲人成无码www久久久| 青青草原成人网| 国产亚洲天堂网| 欧美 国产 小说 另类| 国产在线青青草| jizz欧美激情18| 91 在线视频观看| 国产美女视频免费看| 在线视频日韩欧美| 成年人黄色在线观看| 中文字幕第一页亚洲| 日本一级淫片演员| 国产又粗又大又爽的视频| 欧美精品 - 色网| 99re99热| 中文字幕人妻熟女人妻洋洋| 欧美中日韩在线| 国产在线播放观看| 欧美变态另类刺激| 国产激情在线观看视频| 亚洲精品怡红院| 激情成人在线观看| 无码人妻精品一区二区蜜桃百度| 欧美人与动牲交xxxxbbbb| 日本国产在线播放| 欧美一级特黄a| 手机看片日韩国产| 9久久9毛片又大又硬又粗| 国产无套粉嫩白浆内谢的出处| 国产高清视频网站| 欧美爱爱视频网站| 黄网站欧美内射| 一区二区在线免费看| av中文字幕av| 日本久久久精品视频| 日韩精品视频网址| 婷婷五月综合缴情在线视频| www.xxx亚洲| 五月天激情图片| 国产aaa一级片| 国产a级片免费看| 欧美日韩黄色一级片| 福利片一区二区三区| 国产精品视频一二三四区| 青青在线视频观看| 九一免费在线观看| www.99av.com| 免费在线观看视频a| 三区视频在线观看| 黄色一级视频片| 久久久久久久久影视| 高清一区在线观看| 亚洲人成无码网站久久99热国产 | 欧美黄色免费网址| www日韩视频| 老太脱裤子让老头玩xxxxx| 色婷婷激情视频| 国产成人精品无码播放| 日韩精品久久一区二区| 艹b视频在线观看| 男人操女人免费| 久久国产精品网| 国产一级片91|