文章目錄
- 前言
- 創建一般索引的語法
- 前綴索引
前言
索引有助于提升數據庫表的查詢速率,極大的縮減查詢的時間。但索引的創建需要考慮的因素很多,并非索引越多越好!
創建一般索引的語法
oracle創建一般的常見索引,語法如下所示:
摘錄于:努力的小羽兒——oracle創建索引
--創建索引
CREATE [UNIQUE] INDEX <索引名>
ON <基本表名> (<列名> [<次序>],[,<列名> [<次序>]]…);
--說明:
--UNIQUE:規定索引的每一個索引值只對應于表中的唯一記錄。
--<次序>:建立索引時指定列名的索引表是ASC(升序)或DESC(降序)。--索引的創建語句(簡潔)
create index 索引名 on 表名(列名);--標準語法
create index 索引名 on 表名(列名) tablespace 表空間名;--tablespace 表空間名 可以省略,以下皆省略--創建唯一索引
create unique index 索引名 on 表名(列名);--復合索引/組合索引
create index 索引名 on 表名(列名1, 列名2, 列名3, ...);--反向鍵索引
create index 索引名 on 表名(列名) reverse;--刪除索引
drop index 索引名 on 表名;--降序索引?
?CREATE INDEX 索引名 ON 表名(列名 desc) ; --升序asc--查看某個表中的所有索引
select * from all_indexes where table_name = '表名'--查看某個表中建立了索引的所有列
?select * from all_ind_columns where table_name = '表名'
前綴索引
前綴索引
這個詞在Mysql
中出現的比較多,在oracle中也能創建類似的索引。
索引的創建,會讓數據庫額外維護一個對應的索引B+樹。
如果索引的字段很大,將導致創建索引B+樹的大小越大。
如果又想對大數據字段加索引,又想不占用太多的內存,則可以采取前綴索引
。
創建可執行腳本,案例如下所示:
-- 增加 IMES_INDICATOR_CALCLOG 前綴索引
DECLARECNT INTEGER;
BEGINselect COUNT(0)INTO CNTfrom user_indexeswhere table_name = upper('IMES_INDICATOR_CALCLOG')and index_name = upper('logid_index');IF CNT = 0 THENEXECUTE IMMEDIATE 'create index logid_index on IMES_INDICATOR_CALCLOG left(logid,12)';END IF;
END;
/
IMES_INDICATOR_CALCLOG
中的logid
是一個uuid
的數據,增加前綴索引,則使用到了LEFT函數。