一、索引概念

• 在关系数据库中,索引是一种与表有关的数据库对象,它可以使对应于表的SQL查询语句执行得更快。

• 索引的作用类似于图书的目录,可以根据目录中的页码快速找到所需的内容。

• 对于数据库来说,索引是一个必选项,对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一部分。

二、索引分类

2.1、按物理存储方式分类

  • B*树索引

    • B*树索引的存储结构类似书的索引结构,有分支和叶两种类型的存储数据块。分支块相当于书的大目录,叶块相当于索引到具体的书页。

  • 位图索引

    • 位图索引的存储主要用来节省空间,减少Oracle对数据块的访问,它采用位图偏移方式来与表的行ID对应,采购位图索引一般是重复值太多的表字段。

2.2、按逻辑功能分类

  • 唯一索引

    • 唯一索引意味着不会有两行记录相同的索引键值。

  • 非唯一索引

    • 非唯一索引即不对索引列的值进行唯一性限制。

三、索引原则

在正确使用索引的前提下,索引可以提高检索相应表的速度。

• 下列情况可以创建索引

  • 字段取值分布范围很广

  • 字段中包含大量空值

  • 字段经常出现在where子句或连接条件中

  • 表经常被访问、数据量很大,且通常每次访问的数据量小于记录总数的2%-4%。

• 下列情况不适合创建索引

  • 表很小

  • 字段不经常出现在where子句中

  • 每次访问的数据量大于记录总数的2%-4%

  • 表经常更新

  • 被索引的字段作为表达式的一部分被引用

四、索引语法

• 索引创建的语法

  • create [unique|bitmap] index 索引名称

    on 表名(列名1[desc|asc],……)

• 创建索引

create index ix_emp_ename on emp(ename);

• 删除索引

drop index ix_emp_ename;

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/atomy/p/16381678.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!