Oracle索引详解

1.索引只是一种快速访问数据的途径,只影响速度,可以使用create index 命令在一列或多列的组合上
创建索引;语法如下
create index index_name on table_name(column_list) [tablespace tablespace_name];
index_name指所创建的索引的名称
table_name表示为之创建索引的表名;
column_list 是在其上创建索引的列名列表,可以基于多列创建索引
tablespace_name为索引指定表空间;


eg:
sql>create index name_index on student (stuname);


2.索引分类:alter index语句和rebuild选项可以重建现有的索引,drop index语句删除索引
1>.唯一索引:唯一索引可以确保在定义索引的列中,表的人员两行的值都不相同。 非唯一索引
没有在列值上规定此限制;oracle自动为表的主键列创建唯一索引;可以使用create unique index
命令明确创建一个唯一索引  ;eg:
sql>create unique index name_index on student(stuname);


2>.组合索引:指在表中的多个列上创建的索引,组合索引中的列的顺序是任意的,不必是表中相邻的列;
如果select语句中的where子句引用了组合索引中的所有列或大多数列,则组合引用可以提高数据检索的
速度,创建索引时,应注意定义中使用的列的顺序。通常最频繁访问的列应放在列表的最前面;
语法如下:eg:
sql>create index mycomp_index on student(num,student);


3>.反向键索引:通常建立在一些值连续增长的列上,如列中的值是由序列产生的情况;可以在create index语句中指定关键字reverse创建反向,键索引语法如下
sql>create index myrev_index on student(stuname) reverse;
注意:可以使用关键字noreverse 将反向键索引重建为标准索引,但不能将标准索引重建为反向键索引;
sql>alter index murev_index rebuild noreverse;


4>.位图索引:优势在于它适用于低基数列,即不同值的数目比表的行数少的列;如某个列的值重复了超过100次,可以考虑在该列上创建位图索引;如一个表有100万条数据,其中一列小于1000个不同的值,则可以考虑在该列上创建位图索引;语法:
sql>create bitmap index mybit_index on student(stuname);   --这里的stuname就是一个低基数列


5>.基于函数的索引:基于一列或多列上的函数或表达式创建索引,当where子句中包含函数或表达式以计算查询时基于函数的索引十分有效;创建索引的函数可以是算术表达式,也可以是PL/SQL函数,ref列或包含lob或ref的对象类型上创建基于函数的索引;eg:
sql>create index myvn_ind on student (upper(stuname));   --upper是内置函数,适用于检索大写姓名的条目,它将字母转为大写了;
再如:
sql>select * from student where upper(stuname) = 'Huang Bing';




3.查询user_indexes表可以获取用户创建的索引详细信息
User_ind_partitions可以获取有关用户已经创建的分区索引的详细信息
user_ind_columns可以获取有关列(用户的索引是基于这些列的)的详细信息


eg:检索再其上创建索引的表和列的名称
select index_name,table_name,column_name from user_ind_columns order by index_name,column_position;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值