Oracle索引(1)

   索引是为了更快的检索数据,就是为了更快的查找,在表里面的数据量比较大的时候,查找一条记录会花费大量的时间,其中,唯一
索引可以保证表里数据的唯一性.

索引主要有以下作用:

  1. 索引是的检索数据的速度大大加快

  2. 创建索引时自动添加了唯一性约束,通过使用唯一性索引可以保证数据库表中每一行数据的唯一性.

  3. 通过索引可以加快表与表之间连接, 使得在数据库中进行多表连接查询是速度明显增强.

  4. 使用索引后,在分组和排序字句进行数据汇总时,可以显著的减少查询分组和排序的时间.

     索引需要在表基础上创建,需要占用额外的物理空间,而且对表进行修改是,比如修改删除数据时,需要进行动态维护.
    需要注意的时,在实际生产中,如果给以存在表添加索引需要注意,如果表里面的
    

    数据梁比较大的时候, 建索引的时间会很长, 会占用很多数据库的资源,已经比较
    重要的表或者增加删除修改数据比较频繁的表,需要注意,不然可能出问题.

索引分类
一. 按照索引列划分

  1. 单列索引, 基于但个列所创建的索引,只是最简单的索引创建方式.
  2. 多列索引, 又称为复合索引或组合索引,可以称为拼接索引(concatenated index), 索引基于数据表的多个列而创建.
    二. 按照索引值的唯一性划分
  3. 唯一性索引, 索引列值不能重复的索引,比如一些具有unique约束的索引.
  4. 非唯一性索引, 索引列之可以重复的索引.
    三. 按照索引的功能结构上来划分
  5. B* 树索引, Oracle 默认使用的索引,索引按照平衡二叉树结构组织并存放索引数据, 索引可以时单列索引或复合索引 , 唯一索引或非唯一索引
  6. 位图索引, 为索引列的每个去之创建一个位图( bit 位, 而非图片), 对表中的每行使用1位(bit 取值为0或者1) 来表示改行是狗包含该位图的索引的去之.
  7. 函数索引,索引的去之不直接来自列, 而是来自包含列的汉书或者表达式,这就是函数索引。

分析索引

ANALYZE INDEX 索引名 VALIDATE STRUCTURE;
SELECT name, height FROM INDEX_STATS;    --查询索引的高度值
SELECT index_name, blevel, num_rows FROM user_indexes WHERE table_name = '表名';

创建索引

CREATE [UNIQUE] | [BITAMP] INDEX index_name                                        --创建索引
ON table_name ([column1 [ASX | DESC], column1 [ASX | DESC], ... ] | [express] )    --指定索引所在的表和索引列排序方式
[TABLESPACE tablespace_name]                                                       --索引存储的表空间
[PCTFREE n1]                                                                       --空闲空间比率
[STORAGE (INITIAL n2)]                                                             --储存参数设置
[NOLOGGING]                                                                        --是否产生重做日志
[NOLINE]                                                                           --是否创建或重建是允许DML操作
[NOSORT];                                                                          --显示指定不对索引列进行排序

UNIQUE,表示唯一索引
BITMAP, 表示位图索引
PCTFREE,用于指定为将来的INSERT操作预留的空闲空间的百分壁纸,与数据快的PCTFREE的作用比较相似。对于经常插入的数据的表,应该为表中索引指定一个比较大的空闲空间。
STORAGE
ONLINE,表示在创建或重建索引是,允许对表进行DML操作。默认情况下,不适用该选项。

一般来说,创建索引将完成如下的几个步骤
1、对全表进行扫描,收集索引数据。
2、岁索引的数据进行排列,为索引分配储存空间。
3、将索引的定义信息保存到数据字典中。

创建函数索引

CREATE INDEX 索引名 ON 表名(1+2);

修改索引

ALTER INDEX [snhema. ]   index                      --指定要修改的索引名称
{  {  deallocate_unused_clause                      --回收未使用的索引空间的字句
   |  allocate_extent_clause                        --为索引分配新的段的字句
   |  shrink_clause                                 --压缩索引段的字句
   |  parallel_clause                               --指定并行度字句,可以加速索引的创建速度
   |  physical_attributest_cluse                    --更改索引的物理储存参数
   |  logging_clause                                --是否为索引添加重做日志内容           
   }  ...
 | rebulid_clause                                   --指定重建索引的句子
 | PARAMETERS ( 'ODCI_parameters')                  --索引的ODCI参数设置
 | COMPILE                                          --用来重新编译一无效的应用域索引
 | { ENABLE | DISABLE }                             --仅对函数索引有用,她用于启用或禁用函数索引
 | UNUSABLE                                         --指定索引不可用,这会立即释放索引占用的空间
 | VISIBLE | INVISIBLE                              --指定索引对优化器是否课件或不可见
 | RENAME TO new_name                               --重命名索引
 | COALESCE                                         --命并索引内容
 | { MONITORING | NOMONITORING } USAGE              --监视索引的使用性
 | UPDATE BLOCK REFREENCES                          --仅对索引组织表上的标准或应用索引域有用
 | alter_index_partitioning                         --修改索引分区
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值