更新時間:2021-03-01 17:22:09 來源:動力節點 瀏覽1457次
索引是數據庫對象之一,用于加快數據的檢索,類似于書籍的索引。在數據庫中索引可以減少數據庫程序查詢結果時需要讀取的數據量,類似于在書籍中我們利用索引可以不用翻閱整本書即可找到想要的信息。Oracle數據庫中也有索引,本文我們就來看看Oracle索引的使用方法。
1.創建索引語法
CREATE [UNIQUE] | [BITMAP] INDEX index_name --unique表示唯一索引
ON table_name([column1 [ASC|DESC],column2 --bitmap,創建位圖索引
[ASC|DESC],…] | [express])
[TABLESPACE tablespace_name]
[PCTFREE n1] --指定索引在數據塊中空閑空間
[STORAGE (INITIAL n2)]
[NOLOGGING] --表示創建和重建索引時允許對表做DML操作,默認情況下不應該使用
[NOLINE]
[NOSORT]; --表示創建索引時不進行排序,默認不適用,如果數據已經是按照該索引順序排列的可以使用
2.修改索引
1)重命名索引
alter index index_sno rename to bitmap_index;
2) 合并索引(表使用一段時間后在索引中會產生碎片,此時索引效率會降低,可以選擇重建索引或者合并索引,合并索引方式更好些,無需額外存儲空間,代價較低)
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子句引用時,優化器才會使用該索引)
3. 小表不要簡歷索引
4. 對于基數大的列適合建立B樹索引,對于基數小的列適合簡歷位圖索引
5. 列中有很多空值,但經常查詢該列上非空記錄時應該建立索引
6. 經常進行連接查詢的列應該創建索引
7. 使用create index時要將最常查詢的列放在最前面
8. LONG(可變長字符串數據,最長2G)和LONG RAW(可變長二進制數據,最長2G)列不能創建索引
9.限制表中索引的數量(創建索引耗費時間,并且隨數據量的增大而增大;索引會占用物理空間;當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,降低了數據的維護速度)
Oracle索引是一種與表有關的數據庫結構,它可以使對應于表的SQL語句執行得更快。Oracle索引可以大大提高數據庫的性能,以至于它變成了數據庫不可缺少的一部分。本站的Oracle教程中有很多關于Oracle的優秀知識點,能夠有效幫助我們快速掌握Oracle數據庫的核心內容。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習