oracle的索引分为5种:唯一索引,组合索引,反向键索引,位图索引,基于函数的索引
创建索引的标准语法:
CREATE INDEX 索引名 ON 表名 (列名) TABLESPACE 表空间名;
创建唯一索引:
CREATE unique INDEX 索引名 ON 表名 (列名) TABLESPACE 表空间名;
创建组合索引:
CREATE INDEX 索引名 ON 表名 (列名1,列名2) TABLESPACE 表空间名;
创建反向键索引:
CREATE INDEX 索引名 ON 表名 (列名) reverse TABLESPACE 表空间名;
创建基于函数的索引:
基于函数的索引就是存储预先计算好的函数或表达式值的索引。这些表达式可以是算术运算表达式、SQL或PL/SQL函数、C调用等
CREATE INDEX idx ON emp ( UPPER(ename)) TABLESPACE 表空间名;
什么时候重建呢?
察看 dba_indexes 中的 blevel 。这列是说明索引从根块到叶快的级别,或是深度。如果级别大于等于4。则需要重建,
如下 :Select index_name,blevel from dba_indexes where blevel>=4.
另一个从重建中受益的指标显然是当该索引中的被删除项占总的项数的百分比。如果在20%以上时,也应当重建,如下
SQL>analyze index index_name validate structure
SQL>select (del_lf_rows_len/lf_rows_len)*100 from index_stats where name=' index_name '
重建索引的方法
1、删除并从头开始建索引:方法是最慢的,最耗时的。一般不建议。
2、使用 alter index index_name rebuild 命令重建索引。使用现有索引项来重建新索引
3、使用 alter index index_name rebuild online; 带online参数来最大限度的减少索引重建时将会出现的任何加锁问题
4、使用 alter index index_name coalesce 命令重建索引。在重建索引时将处于同一个索引分支内的叶块拼合起来
5、使用 alter index index_name rebuild tablespace tablespace_name
加入表空间名,可指定的索引移动到指定的表空间当中,当索引建完后可把老索引删除
oracle索引,索引的建立、修改、删除
https://www.cnblogs.com/djcsch2001/articles/1823459.html
Oracle数据库中建立索引的基本方法讲解
http://www.jb51.net/article/78660.htm
Oracle索引重建
https://www.2cto.com/database/201511/451633.html
Oracle表与索引的分析及索引重建
https://www.cnblogs.com/lanzi/archive/2010/12/31/1923270.html
oracle函数索引小结
https://www.cnblogs.com/sopost/archive/2010/01/20/2190121.html
如何创建oracle函数索引