索引(INDEX)是为了加快数据的查找而创建的数据库对象,特别是对大表,索引可以有效地提高查找速度,也可以保证数据的惟一性。索引是对数据库表中一列或多列的值进行排序的一种结构使用索引可快速访问数据库表中的特定信息。索引不论逻辑上和物理上都与相关的表的数据无关,索引需要独立的存储空间,所以索引在创建之初就需要设置对应的表空间在创建PRIMARY KEY和UNIQUE 约束条件时,系统将自动为相应的列创建惟一(UNIQUE)索引。索引的名字同约束的名字一致。
1.索引的创建
创建索引不需要特定的系统权限。建立索引的语法如下:
CREATE [{UNIQUE|BITMAP}] INDEX索引名ON 表名(列名1[,
列名2 ,...]);
其中:
UNIQUE 代表创建惟一索引,不指明为创建非惟一索引。
BITMAP 代表创建位图索引,如果不指明该参数,则创建B*树索引。
列名是创建索引的关键字列,可以是一列或多列。
2.索引的分类:
2.1 唯一索引
1、何时创建:当某列任意两行的值都不相同
2、当建立Primary Key(主键)或者Unique constraint(唯一约束)时,唯一索引将被自动建立
3、语法:CREATE UNIQUE INDEX index ON table (column);
2.2 组合索引
1、何时创建:当两个或多个列经常一起出现在where条件中时,则在这些列上同时创建组合索引
2、组合索引中列的顺序是任意的,也无需相邻。但是建议将最频繁访问的列放在列表的最前面
3、语法:CREATE INDEX index ON table (column1,column2);
2.3 位图索引
1、何时创建:
列中有非常多的重复的值时候。例如某列保存了“性别”信息。
Where 条件中包含了很多OR操作符。
较少的update操作,因为要相应的更新所有的bitmap
2、结构:位图索引使用位图作为键值,对于表中的每一行数据位图包含了TRUE(1)、FALSE(0)、或NULL值。
3、优点:位图以一种压缩格式存放,因此占用的磁盘空间比标准索引要小得多
4、语法:CREATE BITMAP INDEX index ON table (column[, column]...);
2.4范围索引
SQL > CREATE [UNIQUE]INDEX INDEX_NAME ON TABLE(COLUMN)
global partition by range(column)
(
partition part_idx_01 value less than(first range value) tablespace index_space01,
partition part_idx_02 value less than(second range value) tablespace index_space02,
partition part_idx_03 value less than(maxvalue) tablespace index_space03)
2.5散列索引
SQL > CREATE [UNIQUE]INDEX INDEX_NAME ON TABLE(COLUMN,[COLUMN2])
global partition by hash(column,[column2])
(
partition part_idx_01 tablespace index_space01,
partition part_idx_02 tablespace index_space02,
partition part_idx_03 tablespace index_space03)
3.查看索引信息
DBA查看索引分区
select * from dba_ind_partitions
USER查看索引分区
select * from user_ind_partitions
DBA查看索引分区类型
select * from dba_part_indexes
USER查看索引分区类型
select * from user_part_indexes
删除索引的语法是
DROP INDEX 索引名;