MySQL索引

索引是什么?

​ 索引是数据库中一个或多个列的值进行排序的结构,是帮助MySQL高效获取数据的数据结构。能够理解为,索引是一本书的目录,若是想快速查找某个内容,能够根据索引(目录)快速的找到想要找到的内容。而没必要要扫描整个数据库。mysql

MySQL索引类型

  • 普通索引
  • 主键索引
  • 惟一索引
  • 组合索引
  • 全文索引

索引的优缺点:

索引的使用方式:对数据进行频繁查询创建索引,若是须要频繁更改数据不建议使用索引sql

优势:数据库

  • 索引最大的好处就是提升查询速度

缺点:数据结构

  • 缺点就是更新数据时效率低,更新数据的同时也要更新索引。
  • 索引须要占据物理空间和数据空间。

B+索引和hash索引

​ 二者的区别:性能

  • B+索引数据有序,范围查询
  • Hash索引等值查询效率高,对于范围查询、排序及组合索引仍然效率不高。因为HASH的惟一及相似键值对的形式,很适合做为索引。HASH索引能够一次定位,不须要像树形索引那样逐层查找,所以具备极高的效率。可是,这种高效是有条件的,即只在“=”和“in”条件下高效

聚簇索引和非汇集索引

  • 汇集索引:数据按索引顺序存储,中子节点存储真实的物理数据
  • 聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据
  • 非汇集索引:存储指向真正数据行的指针
  • 非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行。

索引的底层实现

三种树的区别:mysql索引

  • 红黑树:红黑树进行增长或删除的时候,会进行频繁的调整,来保证红黑树的性质,会浪费时间
  • B-树:b-树查询性能不稳定,查询结构高度不致,每一个结点保存指向真实数据的指针,相对比与B+数每一层每屋存储的元素更多,显得更高一些。
  • B+数:b+数相比较于另外两种数,显得更矮更宽,查询层次更浅。更方便查询。

哪些状况下须要建立索引?

  • 一、主键自动建立惟一索引指针

  • 二、频繁做为查询条件的字段应该建立索引排序

  • 三、查询中与其余表关联的字段,外键关系创建索引索引

  • 四、where条件里用到的字段须要建立索引hash

  • 五、最好建立组合索引

  • 六、查询中排序的字段,排序字段若经过索引访问将大大提升排序速度

  • 七、查询中涉及到统计和分组的字段

哪些状况不须要建立索引?

  • 一、表记录过少的时候
  • 二、常常增删改的表
  • 三、包含许多重复内容的列
  • 四、频繁更新的字段不适合建立索引
相关文章
相关标签/搜索