一. 索引介绍
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. 使用不等于操作符(<>,!=)
待续哈哈
   

转: Oracle 索引详解相关推荐

  1. Oracle索引详解(索引的原理,创建索引,删除索引,修改索引等)

    Oracle索引详解 一.索引概述 Oracle作为关系型数据库,用户查找数据与行的物理位置无关,表中的每一行均用一个ROWID来标识,当Oracle数据库中存储海量的记录时,就意味着有大量的ROWI ...

  2. Oracle 索引 详解 - 索引分类

    二. 索引分类 Oracle提供了大量索引选项.知道在给定条件下使用哪个选项对于一个应用程序的性能来说非常重要.一个错误的选择可能会引发死锁,并导致数据库性能急剧下降或进程终止.而如果做出正确的选择, ...

  3. Oracle索引 详解

    一.索引介绍 1.1 索引的创建语法: CREATE UNIUQE | BITMAP INDEX <schema>.<index_name> ON <schema> ...

  4. oracle spool文件名+系统时间,Oracle Spool详解

    转自:http://blog.sina.com.cn/s/blog_6bccf0360101hzsh.html 1.spool的作用是什么? spool的作用可以用一句话来描述:在sqlplus中用来 ...

  5. oracle数据库中索值,Oracle数据库中的索引详解

    Oracle数据库中的索引详解以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一 ROWID的概念 存储了row在数据文 ...

  6. oracle分区表编程,Oracle分区表详解

    当前位置:我的异常网» 编程 » Oracle分区表详解 Oracle分区表详解 www.myexceptions.net  网友分享于:2013-10-28  浏览:25次 Oracle分区表详解 ...

  7. oracle有哪两种内存结构,Oracle体系结构详解(物理构造,内存结构和逻辑结构)...

    当前位置:我的异常网» 数据库 » Oracle体系结构详解(物理构造,内存结构和逻辑结构 Oracle体系结构详解(物理构造,内存结构和逻辑结构) www.myexceptions.net  网友分 ...

  8. oracle里面asm的作用,Oracle ASM 详解

    Oracle ASM 详解 ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也 ...

  9. Oracle 存储过程详解(上)

    目录 一.存储过程与存储函数的定义 二.创建 / 执行存储过程所需的权限 1.resource权限 2.create.execute procedure权限 三.创建 / 执行存储过程 四.变量与参数 ...

最新文章

  1. OpenImage冠军方案:在物体检测中为分类和回归任务使用各自独立的特征图
  2. 【PHP 每日函数】第 03 周期
  3. 大厂面试必问!给培训班出身的程序员一些建议
  4. 【采用】互联网金融风控模型的设计
  5. 北斗导航 | 利用模拟卫星星座估计GNSS接收机位置
  6. Android开发之打开QQ聊天页面的方法
  7. 小心 Enum Parse 中的坑
  8. HTML+CSS+JS实现 ❤️酷炫情人节爱心动画特效❤️
  9. LINUX:Contos7.0 / 7.2 LAMP+R 下载安装Php篇
  10. TODO C++ 异常处理
  11. android 7.0原生动态,Android7.0适配教程,心得
  12. linux cron 定时任务
  13. C# winFrom 自定义gridview样式制作好看的大屏显示队列
  14. php-fpm的安装和启动
  15. 判断矩形是否重叠 Python
  16. HAL + RT_Thread = STM32外设用不了? NoNoNo!!
  17. 交换机上的指示灯狂闪
  18. 大陆资金港股打新股亲身体验全流程
  19. java打开jnlp_jnlp文件怎么打开
  20. 快速下载自己喜欢的网页图片

热门文章

  1. UML实践详细经典教程
  2. 【Flask项目】sqlalchemy原生sql查询,返回字典形式数据
  3. git/gitee操作手册
  4. [trustzone]-TZC400学习总结
  5. aarch64的TCR寄存器介绍
  6. 基于以太坊的分布式投票系统solidity合约代码
  7. Mysql的事务事务的特征事务的隔离级别
  8. linux下删除有锁的文件夹,Linux 文件夹右下角有锁,解锁
  9. Debian部署postgresql并允许远程连接
  10. angr学习笔记(11)(SimProcedure)