一、索引概念
• 在关系数据库中,索引是一种与表有关的数据库对象,它可以使对应于表的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;
文章来源: 博客园
- 还没有人评论,欢迎说说您的想法!