转: Oracle 索引详解

本文介绍了数据库索引的创建语法及特点,包括不同类型的索引及其优缺点,如何选择适合的索引类型,以及创建索引时应考虑的因素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 索引介绍
1.1 索引的创建语法
        
CREATE UNIUQEBITMAP INDEX <schema>.<index_name>    
                                              #使用UNIUQE就会附送1个唯一索引, BITMAP为位图索引,默认是B树索引。
ON <schema>.<table_name> (
              <column1_name> | <expression> ASC | DESC,
              <column2_name> | <expression> ASC | DESC,

              )                              #可以对多列进行联合索引, 当为expression时即系"函数索引"
TABLESPACE <tablespace_name>  #指定存放索引的表空间(索引和对应表不在1个表空间,效率会更高)
STORAGE <storage_setting>          #可以进一步设置表空间的存储参数
LOGGING | NOLOGGING               #是否对索引产生重做日志(对达标尽量使用NOLOGGING来减少占用空间并提高效率)
COMPUTE STATISTICS                #创建新索引时收集系统信息.
NOCOMPRESSCOMPRESS<nn>  #是否使用"键压缩"(使用键压缩可以删除1个键列中出现的重复值)
NOSORT | REVERSE                      #正向索引还是反向索引
PARTITION | NOPARTITION        #可以在分区表和未分区表上对创建的索引进行分区


1.2 索引的特点
1.通过创建1个唯一性索引,系统会自动创建1个唯一性约束。 可以保证该列(或约干列的唯一性).
2.可以大大加快数据的检索速度,这也是创建索引的目的。
3.可以加速表与表之间的连接。
4.在使用分组和排序字句进行数据查询时,同样可以显著减少分组和排序时间。
5.通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统性能。
6.对于搜索的数据占表数据的比例越低,索引的作用越明显.

1.3 索引的不足
1. 创建和维护索引需要时间成本,而且随数据量增加而增加。
2. 索引会占大量物理空间,不过随着单位硬盘价格不断降低,忽略拉。
3. 对表中数据怎想增删改操作时,索引也要更新维护,会降低增删改的性能。

1.4 应该建索引列的特点
1. 在经常需要搜索的列上,可以加快搜索速度。
2. 在作为主键的列上, 强制该列的唯一性和组织表中数据的排列结构。
3. 在经常用在连接的列上(如外键), 加快表连接速度。
4. 在经常需要根据范围进行搜索的列上,因为索引已经排序,其指定的范围是连续的。
5. 在经常需要排序的列上。
6. 在经常处于where 条件的列上。

1.5 不应该建索引列的特点
1. 对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。

2.对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。

3.对于那些定义为blob数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少.

4.当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。


1.6 限制索引
限制索引是一些没有经验的开发人员经常犯的错误之一。在SQL中有很多陷阱会使一些索引无法使用。
下面讨论一些常见的问题:

1. 使用不等于操作符(<>,!=)
待续哈哈
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

nvd11

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

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

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

打赏作者

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

抵扣说明:

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

余额充值