目录

  • 一、MySQL索引是什么?
  • 1.概念:
  • 2.本质:
  • 3.其他
  • 二、为什么用它?
  • 三、它有哪些种类?
  • 1.普通索引
  • 2.唯一索引
  • 3.全文索引
  • 4.单列索引
  • 5.多列索引
  • 6.空间索引
  • 四、它有什么优缺点?
  • 1.优点?
  • 2.缺点?
  • 3.Tips:


一、MySQL索引是什么?

1.概念:

索引(Index) :是帮助MySQL高效获取数据的数据结构

2.本质:

索引的本质: 索引是数据结构 ,可以简单的理解为: “排好序的快速查找的数据结构” 它满足特定查找算法。这些数据结构以某种方式指向数据, 这样就可以在这些数据结构的基础上实现 高级查找算法 。

3.其他

索引是在存储引擎中实现的,在InnoDB中是B+树,存储引擎可以定义每个表的“最大索引数” 和“最大索引长度” 所有存储引擎支持每个表至少16个索引,总索引长度至少256字节。

二、为什么用它?

使用索引的目的是为了减少磁盘IO的次数 加快查询速率
索引就好比是一本教科书的目录,通过目录中找到对应文章的页码,便可以快速的定位到需要的文章。在MySQL中也是一样的道理,进行数据查找时,首先查看查询条件是否命中某条索引,符合则通过索引查找相关数据,否则就需要全表扫描。没有命中索引,全表扫描就如同想要在茫茫人海中找到对的人一样;使用了索引,就如同使用了北斗导航定位系统,又快又准。

三、它有哪些种类?

索引分为普通索引、唯一索引、全文索引、单列索引、多列索引、空间索引。

1.普通索引

即不应用任何限制条件的索引,该索引可以在任何数据类型中创建。字段本身的约束条件可以判断其值是否为空或唯一。

2.唯一索引

使用UNIQUE参数可以设置唯一索引。创建该索引时,索引的值必须唯一。主键是一种特殊唯一索引。

3.全文索引

使用FULLTEXT参数可以设置全文索引。全文索引只能创建在CHAR、VARCHAR、TEXT类型的字段上。查询数据量较大的字符串类型字段时,使用全文索引可以提高查询速度。注意:全文索引在默认情况下是对大小写字母不敏感的,可以通过使用二进制对索引的列进行排序以执行大小写敏感的全文索引。MySQL中只有MyISAM存储引擎支持全文索引

4.单列索引

顾名思义,单列索引值对应一个字段的索引。可以包括上述的三种索引方式。应用该索引的条件只需要保证该索引值对应一个字段即可。

5.多列索引

多列索引是在表的多个字段上创建一个索引。该索引只想创建时对应的多个字段,可以通过这几个字段进行查询。要想应用该索引,用户必须使用这些字段中的第一个字段。

6.空间索引

使用SPATIAL参数可以设置控件索引。控件索引只能建立在控件数据类型(LINESTRING、POINT、GEOMETRY等)上,这样可以提高系统获取控件数据的效率。MySQL中只有MyISAM存储引擎支持空间索引,且该字段不能为空值。

四、它有什么优缺点?

1.优点?

1.类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本 ,这也是创建索引最主要的原因。
2.通过创建唯一索引,可以保证数据库表中每一行数据的唯一性
3.在实现数据的参考完整性方面,可以加速表和表之间的连接 。换句话说,对于有依赖关系的子表和父表联合查询时,可以提高查询速度。
4.在使用分组和排序子句进行数据查询时,可以显著减少查询中分组和排序的时间 ,降低CPU的消耗

2.缺点?

增加索引也有许多不利的方面,
1.创建索引和维护索引要耗费时间,并且随着数据量的增加,所耗费的时间也会增加。
2.索引需要占磁盘空间 ,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,存储在磁盘上 ,如果有大量的索引,索引文件就可能比数据文件更快达到最大文件尺寸。
3.虽然索引大大提高了查询速度,同时却会降低更新表的速度。当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的维护速度。

因此,选择使用索引时,需要综合考虑索引的优点和缺点。

3.Tips:

索引可以提高查询的速度,但是会影响插入记录的速度。这种情况下,最好的办法是先删除表中的索引,然后插入数据,插入完成后再创建索引。