mysql高级 --- 索引初学,先看这里

前言

mysql肯定不是只有简简单单的CURD,当然CURD才是数据库的核心功能
但是在基础的功能之上,我们能做的就是如何去优化他,而索引就是优化查询的一个重要知识点

下面这一句索引无关
我觉得下面的图让我很快的理解的jion的使用以及定义
7种jion连接

什么是索引

  • MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构
  • 简单理解为:快速查找排好序的一种数据结构。

索引的优缺点

优点:

  • 1.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
  • 2.可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
  • 3.可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
  • 4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
  • 5.通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

缺点:

  • 1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
  • 2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚集索引那么需要的空间就会更大。
  • 3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度,影响增删改的速度

小结:索引需要占用很大的内存空间,不能随意添加,使用索引主要是为了提高索引的查询的速度,但是会降低增删改的速度。

实现索引的方式种类

  • FULLTEXT(全文索引)
  • HASH(哈希索引)
  • BTREE(B+树索引)
  • RTREE(R树索引)

使用索引种类

  • 普通索引:仅加速查询(MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。)
  • 唯一索引:加速查询 + 列值唯一(可以有null)
  • 主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个。
  • 组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并。(在表中的多个字段组合- 上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。例如,这里由id、name和age3个字段构成的索引,索引行中就按id/name/age的顺序存放,索引可以索引下面字段组合(id,name,age)、(id,name)或者(id)。如果要查询的字段不构成索引最左面的前缀,那么就不会是用索引,比如,age或者(name,age)组合就不会使用索引查询)
  • 全文索引:只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引,介绍了要求,说说什么是全文索引,就是在一堆文字中,通过其中的某个关键字等,就能找到该字段所属的记录行,比如有"你是个大煞笔,二货 …" 通过大煞笔,可能就可以找到该条记录。这里说的是可能,因为全文索引的使用涉及了很多细节,我们只需要知道这个大概意思。

参考文章:介绍索引种类

你可能感兴趣的:(数据库,#,mysql高级-索引)