一、索引 1.1 什么是索引? 一种用于提升查询效率的数据库对象; 通过快速定位数据的方法,减少磁盘的输入输出操作; 索引信息与表独立存放; Oracle数据库自动使用和维护索引。 1.2 索引分类 唯一性索引 非唯一性索引 1.3创建索引的两种方式 自动创建---在
一、索引
1.1 什么是索引?
1.2 索引分类
1.3创建索引的两种方式
select * from user_indexes /** 查询现有的索引*/
select * from user_ind_columns /*可获知索引建立在哪些字段上*/
drop index ' 索引名' 删除索引
二、如何创建索引:
2.1、创建索引的语法
CREATE UNIUQE | BITMAP INDEX <schema>.<index_name> ON <schema>.<table_name> (<column_name> | <expression> ASC | DESC, <column_name> | <expression> ASC | DESC,...) TABLESPACE <tablespace_name> STORAGE <storage_settings> LOGGING | NOLOGGING COMPUTE STATISTICS NOCOMPRESS | COMPRESS<nn> NOSORT | REVERSE PARTITION | GLOBAL PARTITION<partition_setting></partition_setting></nn></storage_settings></tablespace_name></expression></column_name></expression></column_name></table_name></schema></index_name></schema>
相关字段的说明
1)UNIQUE | BITMAP:指定UNIQUE为唯一值索引,BITMAP为位图索引,省略为B-Tree索引。
2)
3)TABLESPACE:指定存放索引的表空间(索引和原表不在一个表空间时效率更高)
4)STORAGE:可进一步设置表空间的存储参数
5)LOGGING | NOLOGGING:是否对索引产生重做日志(对大表尽量使用NOLOGGING来减少占用空间并提高效率)
6)COMPUTE STATISTICS:创建新索引时收集统计信息
7)NOCOMPRESS | COMPRESS
8)NOSORT | REVERSE:NOSORT表示与表中相同的顺序创建索引,REVERSE表示相反顺序存储索引值
9)PARTITION | NOPARTITION:可以在分区表和未分区表上对创建的索引进行分区
看上面的内容的确让人有点头晕,下面是对上面创建索引语法的一个简单示例:
1、创建索引的标准语法 CREATE INDEX 索引名 ON 表名 (列名)TABLESPACE 表空间名; 例如: CREATE INDEX idx_of_imsi ON uim_auth_file(imsi) TABLESPACE users; 2、创建唯一索引 CREATE unique INDEX 索引名 ON 表名 (列名)TABLESPACE 表空间名; 例如: CREATE UNIQUE INDEX idx_of_imsi ON uim_auth_file(imsi) TABLESPACE users; 3、创建组合索引 CREATE INDEX 索引名 ON 表名 (列名1,列名2)TABLESPACE 表空间名; 例如: CREATE INDEX idx_of_imsi ON uim_auth_file(iccid,imsi) TABLESPACE users; 4、创建反向键索引 CREATE INDEX 索引名 ON 表名 (列名) reverseTABLESPACE 表空间名; 例如: CREATE INDEX idx_of_imsi ON uim_auth_file(imsi) reverse TABLESPACE users;
三、有关索引的细节问题
3.1 索引的存储
索引和表都是独立存在的。在为索引指定表空间的时候,不要将被索引的表和索引指向同一个表空间,这样可以避免产生的IO冲突。是Oracle能够并行访问存放在不同硬盘中的索引数据和表数据,更好的提高查询速度。
3.2使用索引的原则