Oracle索引

1、索引概念

1、是一个单独的、物理的数据库对象
2、用于存放表中每一条记录的位置的对象。
3、在创建索引时,先要对索引字段进行排序。
4、索引由Oracle自动维护

索引就相当于目录。

索引包含两列:
1、索引字段(首先要进行排序)

2、uid字段

2、索引的优缺点

优点:提高查询速度
缺点:创建和维护索引需要时间;索引需要物理空间,随着数据量的增大而增大;


索引的好处就是查询快,目的就是提高查询效率。


索引由oracle自动维护,在操作(增删查)之后就会自动进行维护。

3、索引分类(简单了解)

按照索引数据的存储方式可以将索引分为B树索引、位图索引、函数索引、簇索引、反序索引等。


按照索引列的唯一性又可以分为唯一索引和非唯一索引
按照索引列的个数索引可以分为单列索引和复合索引

一般的普通索引都是B树索引。

4、创建索引

1、自动创建:通过约束,系统创建
主键约束和唯一约束系统会自动创建索引。


2、手工创建:
create [unique] [bitmap] index index_name on table_name(column_name) [reverse] [tablespace tablespace_name]

手工创建索引又分为三类:创建B树索引、创建基于函数的索引、创建复合索引。

创建B树索引

create index idx_ename on emp(ename);
创建索引


select * from emp where sal>2000;
这个索引的建立不会提高该语句查询的速度,因为创建的索引没有应用到查询中去。


select * from emp where ename=‘smith’;
这个索引的建立会提高该语句查询的速度,因为创建的索引中的ename应用到了查询语句中去了。

默认情况下,创建的索引是不唯一索引。

创建基于函数的索引

create index idx_lower on emp(lower(ename));
创建索引


select * from emp where ename=‘smith’;
索引在这个查询中不起作用


select * from emp where lower(ename)=‘smith’;
索引在这个查询中起作用

创建复合索引

create index idx_js on emp(job,sal);
创建索引


select * from emp where job=‘sales’ and sal>2000;
索引在这个查询中起作用


select * from emp where sal>2000 and job=‘sales’;
索引在这个查询中不起作用


对于复合索引,索引先按照job进行排序,在进行sal的排序
创建复合索引中的字段顺序要与查询时字段的顺序保持一致,索引才起作用。
select * from emp where job='sales';
索引在这个查询中起作用

select * from emp where sal>2000;
索引在这个查询中不起作用,因为先根据job排序后再用sal排序。

使用sql developer 创建索引:

一个创建索引页面只能创建一个索引。

5、查看索引

查看索引基本上都是通过数据字典进行查询的。


数据字典三类:all_,user_,dba_

使用数据字典user_indexes,查看当前用户下所建立的索引。


查看表结构:
desc user_indexes;
查看索引:
select index_name, index_type , table_name, tablespace_name from user_indexes;

normal表示普通索引,Function_based normal是基于函数的索引。

查看相应的列:

select * from user_ind_columns;

6、修改索引

修改索引,一般是两个操作:重命名、删除


重命名索引:

1、alter index idx_lower rename to lower_idx;
将索引名 idx_lower修改为 lower_idx

2、rename lower_idx to idx_lower;
这种重命名索引的方法不正确,会提示lower_idx不存在,这是因为rename不适合索引。


rename用于视图或者表的重命名操作。 例:rename emp to ee;

7、删除索引

删除索引与索引创建时采用的方式有关:

1、手动创建的索引,通过命令删除
drop index index_name;

2、自动创建的索引
通过禁用约束或删除约束的方式来删除对应的索引。

删除表,则会完全删除所有索引


例:drop index pk_dept;
提示:无法删除用于强制唯一/主键约束
因为不能够通过命令删除自动创建的索引。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱睡觉的小馨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值