偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Oracle數(shù)據(jù)庫(kù)索引

數(shù)據(jù)庫(kù) Oracle
Oracle數(shù)據(jù)庫(kù)是甲骨文公司的一款關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。到目前仍在數(shù)據(jù)庫(kù)市場(chǎng)上占有主要份額。索引是表與視圖關(guān)聯(lián)的磁盤(pán)上的結(jié)構(gòu),可以加快從表或視圖中檢索行的行的速度。本文將主要介紹Oracle數(shù)據(jù)庫(kù)索引的有關(guān)知識(shí)。

導(dǎo)讀:數(shù)據(jù)庫(kù)在當(dāng)代社會(huì)中的地位是越來(lái)越高,干什么都似乎離不開(kāi)數(shù)據(jù)庫(kù),所以,掌握好數(shù)據(jù)庫(kù)是在社會(huì)中立足的條件。如果你在數(shù)據(jù)庫(kù)方面是一個(gè)新手,又或者你對(duì)Oracle數(shù)據(jù)庫(kù)不是很熟悉,那你可能會(huì)發(fā)現(xiàn)關(guān)于索引和構(gòu)建索引策略方面的討論資料看起來(lái)很艱澀。不過(guò),只要你對(duì)于能滿足數(shù)據(jù)庫(kù)管理員日常管理相關(guān)的選項(xiàng)稍加注意,其實(shí)要入手還是很容易的。

1)b-tree索引

Oracle數(shù)據(jù)庫(kù)中最常見(jiàn)的索引類型是b-tree索引,也就是B-樹(shù)索引,以其同名的計(jì)算科學(xué)結(jié)構(gòu)命名。每當(dāng)你發(fā)布基本的沒(méi)有經(jīng)過(guò)進(jìn)一步修改的CREATEINDEX語(yǔ)句時(shí),就是在創(chuàng)建b-tree索引。這里不打算對(duì)b-tree索引進(jìn)行更多深入的探討,這些用戶都可以自己了解?;旧线@些索引存儲(chǔ)你創(chuàng)建的索引所在的列值以及用來(lái)查找自身行的指向?qū)嶋H數(shù)據(jù)表的指針。記住,這也就意味著要進(jìn)行多路查詢,其中一個(gè)查詢各個(gè)節(jié)點(diǎn)和索引的葉節(jié)點(diǎn),然后才是表的行自身。這就是為什么Oracle的優(yōu)化器在某種情況下會(huì)選擇執(zhí)行全表掃描而不執(zhí)行索引查找的原因了,因?yàn)槿頀呙鑸?zhí)行起來(lái)實(shí)際上可能會(huì)更快一些。還要注意的是,如果你的索引是創(chuàng)建在多個(gè)列上的話,那么***列(leadingcolumn)非常重要。假設(shè)你有一個(gè)多列索引(也稱為級(jí)聯(lián)索引),索引列的排列順序是c列到d列,你可以對(duì)使用該索引c列單獨(dú)進(jìn)行一次查詢,但你不能使用該索引對(duì)d列冶金行一次單獨(dú)的查詢。

2)基于函數(shù)的索引

如果在搜索時(shí)你讀取很多行,或者你的索引選擇性不大,又或者你在級(jí)聯(lián)索引中使用了***列以外的列,Oracle數(shù)據(jù)庫(kù)有時(shí)候會(huì)選擇不使用索引。那么如果你想要執(zhí)行一個(gè)大小寫(xiě)不敏感的搜索呢?像下面的指令:WHEREUPPER(first_name)= "JOHN"。

這也不會(huì)使用first_name字段上的索引。為什么?因?yàn)镺racle不得不將UPPER函數(shù)用在該索引所有(ALL)的值上,所以還不如做一次全表掃描。所以,很多時(shí)候Oracle創(chuàng)建基于函數(shù)的索引就是為了這個(gè)目的。

3)反轉(zhuǎn)關(guān)鍵字索引

你還可以看到這些反轉(zhuǎn)關(guān)鍵字索引,而且不時(shí)還要用到這些索引。假設(shè)有一列包含了“餐廳甲”、“餐廳乙”、“餐廳丙”等類似名字??赡苓@不是一個(gè)很好的例子,不過(guò)關(guān)鍵的一點(diǎn)是擁有很多唯一值,但其關(guān)鍵字的前面一部分變化不大。因?yàn)镺racle會(huì)在將REVERSE關(guān)鍵字指定給b-tree前把REVERSE字符串簡(jiǎn)化,所以使用反轉(zhuǎn)關(guān)鍵字索引可能是***的。這樣的一個(gè)索引可能更平衡、有用,搜索起來(lái)更快。

更多外部索引類型

Oracle還提供了很多更為復(fù)雜的索引類型。不過(guò)請(qǐng)注意,你***全面閱讀過(guò)相關(guān)的說(shuō)明文檔后再使用這些索引,因?yàn)樗鼈兏髯远加懈髯蕴囟ǖ倪m用范圍。

1)位圖索引(bitmap index)

假設(shè)數(shù)據(jù)庫(kù)表中有一列其選擇性非常窄,例如性別列,該用什么類型的索引?你可能會(huì)考慮對(duì)其使用位圖索引。因?yàn)槲粓D索引正是為相異值很少的列而創(chuàng)建的。但需要考慮的因素還不只這些。一般而言,只有當(dāng)你對(duì)表中值相宜度較小的多個(gè)不同的列都使用位圖索引,這樣位圖索引才有用,因?yàn)槟憧梢砸黄鹗褂眠@些索引才能對(duì)列產(chǎn)生更大的選擇性,否則你還是需要對(duì)這些列進(jìn)行一次全表掃描。例如,對(duì)于性別列,其索引只能有兩個(gè)唯一值,那么用這個(gè)索引對(duì)表的任何搜索有可能都返回一半的記錄。其次,這些索引是為數(shù)據(jù)倉(cāng)庫(kù)而設(shè)計(jì)的,所以其假定條件是數(shù)據(jù)不會(huì)發(fā)生很大的改變。這些索引不能用來(lái)滿足事務(wù)數(shù)據(jù)庫(kù)或更新頻繁的數(shù)據(jù)庫(kù)。應(yīng)該說(shuō),對(duì)位圖索引的表進(jìn)行更新根本沒(méi)有一點(diǎn)效率。

2)位圖連接索引(bitmap join index)

位圖連接索引比位圖索引更進(jìn)了一步。這些索引將位圖化的列完全從表數(shù)據(jù)中抽取出來(lái),并將其存儲(chǔ)在索引中。其假定條件是這些列集合必須一起查詢。同樣的,這也是為數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù)而設(shè)計(jì)的。除了在句法***有一個(gè)WHERE子句之外,位圖連接索引的創(chuàng)建指令就像創(chuàng)建位圖索引的CREATEBITMAPINDEX一樣。

3)壓縮索引

壓縮索引實(shí)際是標(biāo)準(zhǔn)b-tree索引的一個(gè)選項(xiàng)。壓縮索引的葉節(jié)點(diǎn)更少,所以總的I/O數(shù)量和需要的緩存也更少。這些都意味著Oracle的優(yōu)化器更可能使用這些壓縮索引,而不傾向于使用標(biāo)準(zhǔn)的非壓縮索引。不過(guò),這些好處也是有代價(jià)的,當(dāng)你對(duì)這些壓縮索引進(jìn)行存取操作時(shí),要消耗更多的CPU來(lái)進(jìn)行解壓縮。而且,當(dāng)你閱讀關(guān)于優(yōu)化器如何使用這些索引,又是如何選擇合適的壓縮級(jí)別的資料時(shí),就開(kāi)始變得晦澀了。不同的用戶不同的設(shè)置從壓縮索引中得到的好處也可能會(huì)有所不同。

4)降序索引(descending index)

這是基于函數(shù)索引的一種特殊類型。降序索引可以顯著優(yōu)化ORDER BY x, y, z DESC子句查詢的。

5)分區(qū)索引(partitioned index)

如果你的數(shù)據(jù)庫(kù)中有一個(gè)分區(qū)表,你就有機(jī)會(huì)體驗(yàn)幾種新的索引類型,從貫穿所有分區(qū)的全局分區(qū)索引(global)和集中于各個(gè)單獨(dú)分區(qū)的本地分區(qū)索引(local)。這里不再進(jìn)行贅述,想知道細(xì)節(jié)問(wèn)題可以查詢相關(guān)文獻(xiàn)。

6)索引組織表(index organized table,IOT)

這是在Oracle9i中引進(jìn)的一種新類型表。Oracle會(huì)將級(jí)聯(lián)索引及其擴(kuò)展類型的索引用于表中所有的列。當(dāng)所有數(shù)據(jù)都載入到索引結(jié)構(gòu)之后,表就成多余的了,你盡可以將表本身刪除掉。這就是索引組織表。

7)簇索引(cluster index)

基本上,簇索引就是將多個(gè)表的相同列放在一起,而對(duì)該列使用用一個(gè)簇索引。這種索引在實(shí)際應(yīng)用中比較少,因?yàn)檫€有各種有待解決的性能問(wèn)題存在。

8)域索引(domain index)

當(dāng)我們創(chuàng)建為用戶自定義數(shù)據(jù)類型(datatype)創(chuàng)建用戶自定義索引類型(indextype)時(shí)就要使用域索引。

9)隱藏索引(invisible index)

這是Oracle11g中推出的新特性。其創(chuàng)建過(guò)程和標(biāo)準(zhǔn)索引一樣,但創(chuàng)建后對(duì)于基于代價(jià)的優(yōu)化器(CBO)是不可見(jiàn)的。這可以讓你對(duì)性能進(jìn)行大型測(cè)試查詢,而不會(huì)影響現(xiàn)有的正在運(yùn)行的應(yīng)用程序。

10)虛擬索引(virtual index)

這是為測(cè)試人員和開(kāi)發(fā)人員準(zhǔn)備的又一個(gè)工具。虛擬索引(不分配段空間)可以讓你在不需要實(shí)際創(chuàng)建索引的情況下,測(cè)試新索引及其對(duì)查詢計(jì)劃的影響。對(duì)于GB級(jí)的表來(lái)說(shuō),構(gòu)建索引非常耗費(fèi)資源而且還要占用大量時(shí)間。

11)其他的索引類型

Oracle數(shù)據(jù)庫(kù)還提供了很多其他類型的索引,例如用來(lái)為字符型大型二進(jìn)制對(duì)象(CLOB)或其他大型文本數(shù)據(jù)構(gòu)建索引的OracleTEXT,OracleSpatial等。有興趣的讀者可以自己查找相關(guān)資料了解。

都是為了優(yōu)化器

如果你曾經(jīng)廣泛接觸過(guò)MySQL和其他的數(shù)據(jù)庫(kù),你會(huì)發(fā)現(xiàn)甲骨文雖然是全球領(lǐng)先的數(shù)據(jù)庫(kù)供應(yīng)商,但它們的數(shù)據(jù)庫(kù)對(duì)于用戶來(lái)說(shuō)用起來(lái)其實(shí)并不是很方便。提到優(yōu)化器這個(gè)問(wèn)題可能有點(diǎn)離題了,不過(guò)Oracle數(shù)據(jù)庫(kù)最基本的食料就是優(yōu)化器了,這的確是種挺特別的調(diào)料,而且變得越來(lái)越美味了。市面上有很多以O(shè)racle基于代價(jià)的優(yōu)化器(CostBasedOptimizer,CBO)為主題內(nèi)容的書(shū)籍,專門(mén)介紹分析表和索引的技巧和策略。

對(duì)于數(shù)據(jù)庫(kù),除了需要一直更新你的統(tǒng)計(jì)信息之外,你可能還需要不斷測(cè)試新的查詢。使用解析計(jì)劃?rùn)C(jī)制,并進(jìn)行優(yōu)化以便減少總I/O量以及排序和合并數(shù)據(jù)的計(jì)算量,只有這樣你才能獲得更好的性能表現(xiàn)。

總結(jié)

上文主要講述了Oracle數(shù)據(jù)庫(kù)索引的基本知識(shí),對(duì)剛剛?cè)腴T(mén)的初學(xué)者是很好的學(xué)習(xí)資料。雖然Oracle數(shù)據(jù)庫(kù)的索引世界有點(diǎn)嚇人,不過(guò)實(shí)際上你平常經(jīng)常使用的索引就只有那么一些。而且,不管唱反調(diào)的人怎樣詆毀,Oracle的優(yōu)化器都已經(jīng)設(shè)計(jì)相當(dāng)出色;總體而言,Oracle很擅長(zhǎng)于讓你的數(shù)據(jù)庫(kù)運(yùn)行地更有效率。雖然這并不意味著你不需要對(duì)自己的SQL進(jìn)行調(diào)優(yōu),不過(guò),如果你一直保持著***的統(tǒng)計(jì)信息,并讓Oracle為你整理出你所需要的最小數(shù)據(jù)集的話,它能夠以極快的速度滿足你的需要。

【編輯推薦】

  1. 復(fù)制或遷移Oracle數(shù)據(jù)庫(kù)的最簡(jiǎn)單方法
  2. Oracle數(shù)據(jù)庫(kù)的25條基本知識(shí)
  3. Oracle數(shù)據(jù)庫(kù)查詢的五個(gè)小技巧
責(zé)任編輯:迎迎 來(lái)源: 比特網(wǎng)
相關(guān)推薦

2010-04-19 13:31:42

Oracle索引

2023-11-16 17:12:33

數(shù)據(jù)庫(kù)oracle

2009-04-22 14:19:32

Oracle中文索引基礎(chǔ)

2010-04-26 14:24:58

Oracle數(shù)據(jù)庫(kù)索引

2010-03-30 17:40:59

Oracle數(shù)據(jù)庫(kù)

2010-05-10 18:54:12

Oracle數(shù)據(jù)庫(kù)索引

2010-04-07 17:45:22

Oracle位圖索引

2011-04-11 16:50:13

Oracle數(shù)據(jù)庫(kù)索引

2011-07-27 13:22:35

檢查索引碎片Oracle數(shù)據(jù)庫(kù)重建索引

2011-03-07 17:51:00

Oracle數(shù)據(jù)庫(kù)優(yōu)缺點(diǎn)

2011-05-26 10:11:24

Oracle數(shù)據(jù)庫(kù)索引

2009-06-11 13:12:59

Oracle索引創(chuàng)建索引

2019-11-29 07:37:44

Oracle數(shù)據(jù)庫(kù)索引

2010-04-09 13:59:48

Oracle數(shù)據(jù)庫(kù)索引

2011-08-15 21:42:57

Oracle數(shù)據(jù)庫(kù)不能使用索引

2011-05-26 10:30:12

Oracle數(shù)據(jù)庫(kù)約束

2011-03-10 13:24:26

2010-04-23 09:23:44

Oracle 數(shù)據(jù)庫(kù)

2015-08-21 12:59:38

Oracle數(shù)據(jù)庫(kù)

2011-05-19 13:25:14

Oracle數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)