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;
oracl 添加表索引 oracle给表加索引语句
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章