更新時間:2021-03-01 17:22:09 來源:動力節(jié)點 瀏覽1542次
索引是數(shù)據(jù)庫對象之一,用于加快數(shù)據(jù)的檢索,類似于書籍的索引。在數(shù)據(jù)庫中索引可以減少數(shù)據(jù)庫程序查詢結(jié)果時需要讀取的數(shù)據(jù)量,類似于在書籍中我們利用索引可以不用翻閱整本書即可找到想要的信息。Oracle數(shù)據(jù)庫中也有索引,本文我們就來看看Oracle索引的使用方法。
1.創(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操作,默認情況下不應(yīng)該使用
[NOLINE]
[NOSORT]; --表示創(chuàng)建索引時不進行排序,默認不適用,如果數(shù)據(jù)已經(jīng)是按照該索引順序排列的可以使用
2.修改索引
1)重命名索引
alter index index_sno rename to bitmap_index;
2) 合并索引(表使用一段時間后在索引中會產(chǎn)生碎片,此時索引效率會降低,可以選擇重建索引或者合并索引,合并索引方式更好些,無需額外存儲空間,代價較低)
alter index index_sno coalesce;
3)重建索引
方式一:刪除原來的索引,重新建立索引
方式二:
alter index index_sno rebuild;
3.刪除索引
drop index index_sno;
4.查看索引
select index_name,index-type, tablespace_name, uniqueness from all_indexes where table_name ='tablename';
-- eg:
create index index_sno on student('name');
select * from all_indexes where table_name='student';
下面是我們使用Oracle索引時需要注意的地方:
1. 如果有兩個或者以上的索引,其中有一個唯一性索引,而其他是非唯一,這種情況下oracle將使用唯一性索引而完全忽略非唯一性索引
2. 至少要包含組合索引的第一列(即如果索引建立在多個列上,只有它的第一個列被where子句引用時,優(yōu)化器才會使用該索引)
3. 小表不要簡歷索引
4. 對于基數(shù)大的列適合建立B樹索引,對于基數(shù)小的列適合簡歷位圖索引
5. 列中有很多空值,但經(jīng)常查詢該列上非空記錄時應(yīng)該建立索引
6. 經(jīng)常進行連接查詢的列應(yīng)該創(chuàng)建索引
7. 使用create index時要將最常查詢的列放在最前面
8. LONG(可變長字符串數(shù)據(jù),最長2G)和LONG RAW(可變長二進制數(shù)據(jù),最長2G)列不能創(chuàng)建索引
9.限制表中索引的數(shù)量(創(chuàng)建索引耗費時間,并且隨數(shù)據(jù)量的增大而增大;索引會占用物理空間;當對表中的數(shù)據(jù)進行增加、刪除和修改的時候,索引也要動態(tài)的維護,降低了數(shù)據(jù)的維護速度)
Oracle索引是一種與表有關(guān)的數(shù)據(jù)庫結(jié)構(gòu),它可以使對應(yīng)于表的SQL語句執(zhí)行得更快。Oracle索引可以大大提高數(shù)據(jù)庫的性能,以至于它變成了數(shù)據(jù)庫不可缺少的一部分。本站的Oracle教程中有很多關(guān)于Oracle的優(yōu)秀知識點,能夠有效幫助我們快速掌握Oracle數(shù)據(jù)庫的核心內(nèi)容。