什么是索引
数据库索引的本质是数据结构,这种数据结构能够帮助我们快速的获取数据库中的数据。
索引的作用
提高数据检索效率,降低数据的IO成本(不需要全盘扫描)
通过索引对数据进行排序,降低数据排序的成本,降低了CPU的消耗
索引的分类
- 1.普通索引index :加速查找
- 2.唯一索引:
主键索引:primary key:加速查找+约束(不为空且唯一)
唯一索引:unique:加速查找+约束(唯一)
- 3.联合索引(组合索引)
- 4.全文索引fulltext :用于搜索很长一篇文章的时候,效果最好。
索引原理
索引的实现本质上是为了让数据库能够快速查找数据,而单独维护的数据结构,mysql实现索引主要使用的两种数据结构:hash和B+树: 我们比较常用的 MyIsam 和 innoDB引擎都是基于B+树的。
hash:(hash索引在mysql比较少用)把数据的索引以hash形式组织起来,因此当查找某一条记录的时候,速度非常快.当然因为是hash结构,每个键只对应一个值,而且是散列的方式分布.所以他并不支持范围查找和排序等功能.
B+树:b+tree是mysql使用最频繁的一个索引数据结构,以平衡树的形式来组织
阶数更多,路径更短
磁盘读写代价B+树更低,非叶子结点只存储指针,叶子结点存储数据
B+树便于扫库和区间查询,叶子节点是一个双向链表
索引的优点
1.可以通过建立唯一索引或者主键索引,保证数据库表中每一行数据的唯一性.
2.建立索引可以大大提高检索的数据,以及减少表的检索行数
3.在表连接的连接条件 可以加速表与表之间的相连
4.在查询中使用索引可以提高性能
索引的缺点
1.创建索引和维护索引会耗费时间,随着数据量的增加而增加
2.索引文件会占用物理空间,除了数据表需要占用物理空间之外,每一个索引还会占用一定