oracle中什么是索引

oracle中,索引是一種供服務器在表中快速查找一個行的數(shù)據(jù)庫結構,是建立在表的一列或者多列上的輔助對象,目的是加快訪問表中的數(shù)據(jù)。索引的作用:1、快速存取數(shù)據(jù);2、既可以改善數(shù)據(jù)庫性能,又可以保證列值的唯一性等等。

oracle中什么是索引

本教程操作環(huán)境:Windows7系統(tǒng)、Oracle 11g版、Dell G3電腦。

什么是索引?

oracle中,索引是一種供服務器在表中快速查找一個行的數(shù)據(jù)庫結構。

  • 索引是建立在表的一列或者多列上的輔助對象,目的是加快訪問表中的數(shù)據(jù)。

  • oracle 存儲索引的結構是B*數(shù)(平衡樹),而索引是由根節(jié)點、分支點和葉子點組成,上級索引塊包含下級索引塊的索引數(shù)據(jù),葉節(jié)點包含索引數(shù)據(jù)和確定行實際位置的rowid。

在數(shù)據(jù)庫中建立索引主要有以下作用:

(1)快速存取數(shù)據(jù)。

(2)減少I/O操作

(3)既可以改善數(shù)據(jù)庫性能,又可以保證列值的唯一性。

(4)實現(xiàn)表與表之間的參照完整性

(5)在使用orderby、groupby子句進行數(shù)據(jù)檢索時,利用索引可以減少排序和分組的時間。

什么時候用:

  • 作為where后查詢條件的字段適合建立索引。

什么時候不用:

  • 重復字段較多;

  • 不作為where后查詢條件的字段;

  • 表中記錄較少。

怎么用索引:

創(chuàng)建索引:

CREATE?[UNIQUE]?|?[BITMAP]?INDEX?index_name??--unique表示唯一索引 ON?table_name([column1?[ASC|DESC],column2????--bitmap,創(chuàng)建位圖索引 [ASC|DESC],…]?|?[express]) [TABLESPACE?tablespace_name] [PCTFREE?n1]?????????????????????????????????--指定索引在數(shù)據(jù)塊中空閑空間 [STORAGE?(INITIAL?n2)] [NOLOGGING]??????????????????????????????????--表示創(chuàng)建和重建索引時允許對表做DML操作,默認情況下不應該使用 [NOLINE] [NOSORT];????????????????????????????????????--表示創(chuàng)建索引時不進行排序,默認不適用,如果數(shù)據(jù)已經是按照該索引順序排列的可以使用

例如,

創(chuàng)建商品表:

--?Create?table create?table?TB_GOODS ( ??goods_id????VARCHAR2(64)?not?null, ??goods_name??VARCHAR2(256)?not?null, ??goods_price?VARCHAR2(64)?not?null, ??status??????VARCHAR2(1)?not?null );

創(chuàng)建索引:

--這里unique可以省略,若省略則索引為非唯一索引 create?index?UI_tb_goods?on?tb_goods(goods_name); --若使用unique則為唯一索引 create?unique?index?un_tb_goods?on?tb_goods(goods_name); --括號中添加兩列則為組合索引 create?unique?index?un2_tb_goods?on?tb_goods(goods_name,status); --括號中添加三列,其順序沒有關系,效果是一樣的 create?unique?index?un3_tb_goods?on?tb_goods(goods_name,goods_price,status);

唯一索引的另一個作用,控制該列不能有相同值!

查詢索引:

select?*?from?user_indexes?where?table_name='表名'; select?*?from?user_ind_columns??where?index_name='索引名';

推薦教程:《Oracle教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享