成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle數據庫索引

數據庫 Oracle
Oracle數據庫是甲骨文公司的一款關系數據庫管理系統。到目前仍在數據庫市場上占有主要份額。索引是表與視圖關聯的磁盤上的結構,可以加快從表或視圖中檢索行的行的速度。本文將主要介紹Oracle數據庫索引的有關知識。

導讀:數據庫在當代社會中的地位是越來越高,干什么都似乎離不開數據庫,所以,掌握好數據庫是在社會中立足的條件。如果你在數據庫方面是一個新手,又或者你對Oracle數據庫不是很熟悉,那你可能會發現關于索引和構建索引策略方面的討論資料看起來很艱澀。不過,只要你對于能滿足數據庫管理員日常管理相關的選項稍加注意,其實要入手還是很容易的。

1)b-tree索引

Oracle數據庫中最常見的索引類型是b-tree索引,也就是B-樹索引,以其同名的計算科學結構命名。每當你發布基本的沒有經過進一步修改的CREATEINDEX語句時,就是在創建b-tree索引。這里不打算對b-tree索引進行更多深入的探討,這些用戶都可以自己了解。基本上這些索引存儲你創建的索引所在的列值以及用來查找自身行的指向實際數據表的指針。記住,這也就意味著要進行多路查詢,其中一個查詢各個節點和索引的葉節點,然后才是表的行自身。這就是為什么Oracle的優化器在某種情況下會選擇執行全表掃描而不執行索引查找的原因了,因為全表掃描執行起來實際上可能會更快一些。還要注意的是,如果你的索引是創建在多個列上的話,那么***列(leadingcolumn)非常重要。假設你有一個多列索引(也稱為級聯索引),索引列的排列順序是c列到d列,你可以對使用該索引c列單獨進行一次查詢,但你不能使用該索引對d列冶金行一次單獨的查詢。

2)基于函數的索引

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

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

3)反轉關鍵字索引

你還可以看到這些反轉關鍵字索引,而且不時還要用到這些索引。假設有一列包含了“餐廳甲”、“餐廳乙”、“餐廳丙”等類似名字。可能這不是一個很好的例子,不過關鍵的一點是擁有很多唯一值,但其關鍵字的前面一部分變化不大。因為Oracle會在將REVERSE關鍵字指定給b-tree前把REVERSE字符串簡化,所以使用反轉關鍵字索引可能是***的。這樣的一個索引可能更平衡、有用,搜索起來更快。

更多外部索引類型

Oracle還提供了很多更為復雜的索引類型。不過請注意,你***全面閱讀過相關的說明文檔后再使用這些索引,因為它們各自都有各自特定的適用范圍。

1)位圖索引(bitmap index)

假設數據庫表中有一列其選擇性非常窄,例如性別列,該用什么類型的索引?你可能會考慮對其使用位圖索引。因為位圖索引正是為相異值很少的列而創建的。但需要考慮的因素還不只這些。一般而言,只有當你對表中值相宜度較小的多個不同的列都使用位圖索引,這樣位圖索引才有用,因為你可以一起使用這些索引才能對列產生更大的選擇性,否則你還是需要對這些列進行一次全表掃描。例如,對于性別列,其索引只能有兩個唯一值,那么用這個索引對表的任何搜索有可能都返回一半的記錄。其次,這些索引是為數據倉庫而設計的,所以其假定條件是數據不會發生很大的改變。這些索引不能用來滿足事務數據庫或更新頻繁的數據庫。應該說,對位圖索引的表進行更新根本沒有一點效率。

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

位圖連接索引比位圖索引更進了一步。這些索引將位圖化的列完全從表數據中抽取出來,并將其存儲在索引中。其假定條件是這些列集合必須一起查詢。同樣的,這也是為數據倉庫數據庫而設計的。除了在句法***有一個WHERE子句之外,位圖連接索引的創建指令就像創建位圖索引的CREATEBITMAPINDEX一樣。

3)壓縮索引

壓縮索引實際是標準b-tree索引的一個選項。壓縮索引的葉節點更少,所以總的I/O數量和需要的緩存也更少。這些都意味著Oracle的優化器更可能使用這些壓縮索引,而不傾向于使用標準的非壓縮索引。不過,這些好處也是有代價的,當你對這些壓縮索引進行存取操作時,要消耗更多的CPU來進行解壓縮。而且,當你閱讀關于優化器如何使用這些索引,又是如何選擇合適的壓縮級別的資料時,就開始變得晦澀了。不同的用戶不同的設置從壓縮索引中得到的好處也可能會有所不同。

4)降序索引(descending index)

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

5)分區索引(partitioned index)

如果你的數據庫中有一個分區表,你就有機會體驗幾種新的索引類型,從貫穿所有分區的全局分區索引(global)和集中于各個單獨分區的本地分區索引(local)。這里不再進行贅述,想知道細節問題可以查詢相關文獻。

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

這是在Oracle9i中引進的一種新類型表。Oracle會將級聯索引及其擴展類型的索引用于表中所有的列。當所有數據都載入到索引結構之后,表就成多余的了,你盡可以將表本身刪除掉。這就是索引組織表。

7)簇索引(cluster index)

基本上,簇索引就是將多個表的相同列放在一起,而對該列使用用一個簇索引。這種索引在實際應用中比較少,因為還有各種有待解決的性能問題存在。

8)域索引(domain index)

當我們創建為用戶自定義數據類型(datatype)創建用戶自定義索引類型(indextype)時就要使用域索引。

9)隱藏索引(invisible index)

這是Oracle11g中推出的新特性。其創建過程和標準索引一樣,但創建后對于基于代價的優化器(CBO)是不可見的。這可以讓你對性能進行大型測試查詢,而不會影響現有的正在運行的應用程序。

10)虛擬索引(virtual index)

這是為測試人員和開發人員準備的又一個工具。虛擬索引(不分配段空間)可以讓你在不需要實際創建索引的情況下,測試新索引及其對查詢計劃的影響。對于GB級的表來說,構建索引非常耗費資源而且還要占用大量時間。

11)其他的索引類型

Oracle數據庫還提供了很多其他類型的索引,例如用來為字符型大型二進制對象(CLOB)或其他大型文本數據構建索引的OracleTEXT,OracleSpatial等。有興趣的讀者可以自己查找相關資料了解。

都是為了優化器

如果你曾經廣泛接觸過MySQL和其他的數據庫,你會發現甲骨文雖然是全球領先的數據庫供應商,但它們的數據庫對于用戶來說用起來其實并不是很方便。提到優化器這個問題可能有點離題了,不過Oracle數據庫最基本的食料就是優化器了,這的確是種挺特別的調料,而且變得越來越美味了。市面上有很多以Oracle基于代價的優化器(CostBasedOptimizer,CBO)為主題內容的書籍,專門介紹分析表和索引的技巧和策略。

對于數據庫,除了需要一直更新你的統計信息之外,你可能還需要不斷測試新的查詢。使用解析計劃機制,并進行優化以便減少總I/O量以及排序和合并數據的計算量,只有這樣你才能獲得更好的性能表現。

總結

上文主要講述了Oracle數據庫索引的基本知識,對剛剛入門的初學者是很好的學習資料。雖然Oracle數據庫的索引世界有點嚇人,不過實際上你平常經常使用的索引就只有那么一些。而且,不管唱反調的人怎樣詆毀,Oracle的優化器都已經設計相當出色;總體而言,Oracle很擅長于讓你的數據庫運行地更有效率。雖然這并不意味著你不需要對自己的SQL進行調優,不過,如果你一直保持著***的統計信息,并讓Oracle為你整理出你所需要的最小數據集的話,它能夠以極快的速度滿足你的需要。

【編輯推薦】

  1. 復制或遷移Oracle數據庫的最簡單方法
  2. Oracle數據庫的25條基本知識
  3. Oracle數據庫查詢的五個小技巧
責任編輯:迎迎 來源: 比特網
相關推薦

2010-04-19 13:31:42

Oracle索引

2023-11-16 17:12:33

數據庫oracle

2009-04-22 14:19:32

Oracle中文索引基礎

2010-04-07 17:45:22

Oracle位圖索引

2010-05-10 18:54:12

Oracle數據庫索引

2011-04-11 16:50:13

Oracle數據庫索引

2010-03-30 17:40:59

Oracle數據庫

2010-04-26 14:24:58

Oracle數據庫索引

2011-07-27 13:22:35

檢查索引碎片Oracle數據庫重建索引

2010-04-23 09:23:44

Oracle 數據庫

2011-05-26 10:30:12

Oracle數據庫約束

2011-03-10 13:24:26

2015-08-21 12:59:38

Oracle數據庫

2011-05-19 13:25:14

Oracle數據庫

2010-04-09 13:59:48

Oracle數據庫索引

2011-08-15 21:42:57

Oracle數據庫不能使用索引

2011-03-07 17:51:00

Oracle數據庫優缺點

2009-06-11 13:12:59

Oracle索引創建索引

2011-05-26 10:11:24

Oracle數據庫索引

2019-11-29 07:37:44

Oracle數據庫索引
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品一区二区三区在线 | 成人在线看片 | 亚洲天堂一区二区 | 日日噜噜噜夜夜爽爽狠狠视频97 | 午夜精品福利视频 | 免费看一区二区三区 | 97精品一区二区 | 国产伊人久久久 | 久久久久9999 | 国产精品色| 精品入口麻豆88视频 | 久久久久久国产精品 | 精品久久久久久久久久久 | 欧美福利精品 | 午夜性色a√在线视频观看9 | 亚洲福利在线视频 | 日韩av在线一区 | 国产免费福利在线 | 国产伦一区二区三区 | 找个黄色片 | 日韩一级免费电影 | 日韩视频福利 | 日韩精品视频一区二区三区 | 亚洲一区中文字幕在线观看 | 91观看 | 成人做爰9片免费看网站 | 日韩国产中文字幕 | 狠狠入ady亚洲精品经典电影 | 日韩网站在线 | 国产免费一区二区三区 | 国产一区二区三区在线看 | 精品在线一区二区 | 色爽女 | 欧美中文字幕 | 日韩午夜网站 | 久久久久电影 | 午夜丰满寂寞少妇精品 | 91精品国产一区二区三区 | 国产精品大片在线观看 | 伊人狠狠 | 欧美日韩在线播放 |