oracle索引____oracle

來源:互聯網
上載者:User

一個表如果資料量非常的大,如果這個表又沒有索引的話,那麼在查詢這個表中的任何記錄都只能順序的掃描,那麼這將會產生大量的IO輸入輸出,因此會降低執行效率.為了加快查詢的速度,這個時候我們就需要用到索引.什麼是索引呢? 打個比方來說,你看一本書,但是你想看這個書中的某一點內容,假設這本書沒有目錄的話,那麼你只能一頁一頁的去尋找你想要看的內容.這樣是不是很慢.加入有了目錄的話,你首先會去看目錄,找到某一條目錄,然後根據目錄指向的頁碼,然後直接去閱讀該頁碼下你想要閱讀的內容.在這裡來說,目錄就相當於是索引.

在oracle當中,索引也是按照索引關鍵字的順序存放的記錄,也叫資料結構.在索引記錄中存有索引關鍵字,以及指向表中真正資料的指標(地址).oracle系統利用演算法在索引上可以很快的尋找到所系的記錄,並且利用指標找到所需的資料.oracle索引當中只儲存了索引關鍵字和指向表中真正資料的指標,因此規模要小很多,所以對索引進行操作的IO量要比動作表的IO量小很多,也就相當於加快了查詢速度.

在oracle當中,索引是一個獨立於表的對象,它可以存放在與表不同的磁碟上,即使索引崩潰了, 也不會影響真正存有資料的表.索引從建立之後就由oracle自動進行維護.並且oracle自動決定什麼時候使用該索引.不需要在查詢語句當中指定使用索引.如果表被刪除時,基於該表的所有索引都會被自動的刪除掉. 建立索引 系統自動建立 當在表上建立主鍵(primary key),或唯一約束(unique)時,oracle會自動建立唯一索引. 手動建立 手動在一個表的一列或者多列上使用建立索引的語句來建立非唯一索引(NONUNIQUE INDEX). 建立索引的文法如下, CREATE INDEX (索引名稱) ON 表名 列名.可以理解為  建立名為XXX的索引,在(ON)哪個表的哪個列上. 需要注意的是,oracle推薦的索引命名方式為  "表名_列名_物件類型",這種方式對於oracle來說維護起來更方便,當然這不是強制性的,而是一個建議.
查看索引 可以利用oracle的資料字典 user_indexes 來查看當前登入使用者下的索引資訊.一個簡單的查詢語句就搞定  select * from user_indexes 查詢出來的欄位名稱,關注點可以只有幾個,如下.
更詳細的資訊可以查詢 user_ind_columns 這個表來獲得,可以查詢到更具體的資訊.
使用索引應該注意的問題 索引關鍵字:個人理解為就是索引名稱. 儘管建立索引可能會加快查詢速度,但是這可能會降低DML操作的速度.因為每一條DML語句,只要涉及到索引關鍵字,那麼oracle就要調整索引.而且索引做為獨立的對象是需要磁碟空間的.如果表很大,那麼索引消耗的磁碟空間也會很大.應該盡量避免在一個表上建立過多的索引.而且建立了索引,oracle也並不一定保證會使用它.為了使用索引,應該盡量把索引關鍵字放在SELECT語句的WHERE子句中.雖然這也不能保證oracle一定使用索引.例如把複合式索引總的一個索引關鍵字放在了SELECT語句中的WHERE字句中麼人該索引關鍵字不是罪左邊的索引關鍵字. oracle給出的關於索引的建議 表很大而且大多數查詢的返回資料量很少(oracle推薦為小於總行數的百分之二到百分之四).因為如果返回的資料量很大的話,就不如順序的掃描這個表了. 此列的取值範圍很廣.一般為隨機分布.如在大多數員工表中的年齡一列(18--65)歲的都有.可以認為是隨機分布.但是範圍小的話,就不是隨機分布了. 一列或多列經常出現在WHERE字句或串連條件中. 表上的DML操作很少. 此列中包含了大量的空值(NULL) 此列不經常做為SELECT語句中某個運算式的一部分. 函數式索引 一般的索引其關鍵字是列,而函數式索引則是運算式. 假設,如果在SELECT語句中的WHERE字句中使用了某一運算式,那麼如何加快這樣的查詢速度呢?我們可以使用函數式索引來解決這樣的問題. 建立的方式與一般的索引相同,只不過列名換成了運算式.
建立完畢之後查詢可以看到如下
刪除索引 刪除索引文法為 DROP INDEX 索引名稱 其次在刪除表時,跟該表想關聯的一些索引也會被一同刪除.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.