MySQL索引的分类

索引的分类

MySQL的索引包括普通索引、唯一索引、单列索引、多列索引和空间索引等。

  • 功能逻辑上说,索引主要有4种:
  1. 普通索引
  2. 唯一索引
  3. 主键索引
  4. 全文索引
  • 按照物理实现方式,索引分为2种:聚簇索引和非聚簇索引。
  • 按照作用字段个数进行划分,分为单列索引和联合索引

1、普通索引

在创建普通索引时,不附加任何限制条件,只是用于提高查询效率。这类索引可以创建在任何数据类型中,其值是否唯一和非空,要由字段本身的完整性约束条件决定。建立索引以后,可以通过索引进行查询。例如:在表student中name字段上建立普通索引,查询记录时就可以根据该索引进行查询。

2、唯一索引

使用UNIQUE参数可以设置索引为唯一性索引,在创建唯一索引时,限制该索引的值必须是唯一的,但允许有空值。在一张数据表里可以有多个唯一索引

例如:在表student中email字段创建唯一索引,那么字段email的值就必须是唯一的。通过唯一性索引可以更快速地确定某条记录。

3、主键索引

主键索引就是一种特殊的唯一性索引,在唯一索引的基础上增加了不为空的约束,也就是NOT NULL + UNIQUE,一张表最多只有一个主键索引。

  • 为什么?
  • 这是由主键索引的物理实现方式决定的,因为数据存储在文件中只能按照一种顺序进行存储。

4、单列索引

单个字段上建立的索引

5、多列(组合、联合)索引

多列索引是在表的多个字段组合上创建一个索引。该索引指向创建时对应的多个字段,可以通过这几个字段进行查询,但是只有查询条件中使用了这些字段中的第一个字段时才会被使用。例如,在表中的字段id,name和gender上建立一个多列索引idx_id_name_gender(索引命名规范:idx_字段名),只有在查询条件中使用了字段id该索引才会被使用。使用组合索引时遵循最左前缀集合(最左匹配原则)。

6、全文索引

  • 一般使用ES分词搜索

全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用【分词技术】等多种算法智能分析出文本文字中关键字的频率和重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。全文索引非常适合大型数据集,对于小的数据集,用处比较小。

使用参数FULLTEXT可以设置索引为全文索引。在定义索引的列上支持值的全文查找,运行在这些索引列中插入重复值和空值。全文索引只能创建在 CHAR、VARCHARTEXT类型及其系列类型的字段上,查询数据量较大的字符串类型的字段时,使用全文索引可以提高查询速度

7、空间索引

使用参数SPATIAL可以设置索引为空间索引。

空间索引只能建立在空间数据类型上,这样可以提高系统获取空间数据的效率。MySQL中空间数据类型包括 GEOMETRY、POINT、LINESTRING和POLYGON等。目前只有MyISAM存储引擎支持空间检索,而且索引的字段不能为空值。

猜你喜欢

转载自blog.csdn.net/weixin_42675423/article/details/131690541
今日推荐