码迷,mamicode.com
首页 > 数据库 > 详细

数据库索引

时间:2019-08-07 00:03:07      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:平衡   width   扫描   路径   数据库索引   com   组合   一个   避免   

一、为什么引入索引

1. 数据库查询的时候,会进行全表扫描,即每行数据都进行比较

2. 创建了索引,相当于为数据创建了一个目录,避免了全表扫描,提高查询效率

 

二、索引是什么

1. 索引是一个数据结构,最常用的数据结构是平衡树,即B tree或者B+ tree;也有Hash索引,用hash表作为索引

2. 不是二叉树,因为高度不均匀,不能自平衡

 

三、索引从存储结构上分类

1. BTree索引:数据分布在各个节点中,非叶子节点的数据查询效率低

技术图片

2. B+Tree索引:数据只分布在叶子节点中,并且增加了顺序访问指针,比B-Tree效率高

技术图片

2. Hash索引,没有顺序,IO复杂度高,对所有的索引列计算一个hash值,存储在索引中

3. full-index全文索引

 

四、从应用层次上分类

1. 普通索引:一个索引只包含单个列,一张表可以有多个单列索引

2. 唯一索引:索引列的值必须唯一,可以为null,一张表可以有多个唯一索引

3. 复合索引:多列组成一个索引,专门用于组合搜索,其效率大于索引合并

 

五、从物理顺序和索引顺序关系分类

1. 聚集索引,可以直接查到数据,是查到真实数据的唯一路径,用B+树实现

a. 将一个或多个组合列值相同的记录进行排序后移动到一起,创建或删除聚集索引将引起非聚集索引重建

b. 聚集索引关键字可以重复

c. 一张表里只能有一个聚集索引

2. 非聚集索引:独立的索引,生成索引表,占用磁盘空间;先查到主键,再通过聚集索引查到数据

技术图片

 

 

六、主键:没加主键时,数据在磁盘上整齐但是无序存储;加了主键后,数据变成了平衡树结构

1. 一张表只能有一个主键,也只能有一个聚集索引

2. 主键是一种约束,而不是索引

3. 主键不能为null

4. 创建主键时会自动创建聚集索引,但聚集索引可以在不同的字段上创建

5. 为什么要用自增主键作为索引,因为自增主键是连续的,插入B+Tree时,会对B+Tree进行重新调整,自增主键会减少分裂和移动

技术图片

 

七、唯一键约束

1. 唯一约束也用来保证唯一性

2. 作为一种独特的约束,自动创建了唯一非聚集索引,实际上唯一键约束是用唯一索引来约束的

3. 一张表可以有多个唯一约束

 

数据库索引

标签:平衡   width   扫描   路径   数据库索引   com   组合   一个   避免   

原文地址:https://www.cnblogs.com/june0816/p/6774933.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!