MySQL 索引


索引

概述

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

索引的本质:索引是数据结构,可以理解为"排好序的快速查找结构",满足特定查找算法。

优点

  1. 类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本
  2. 通过创建唯一索引,可以保证数据库表中每一行数据的唯一性
  3. 在实现数据的参考完整性方面,可以加速表和表之间的连接
  4. 在分组和排序操作时,可以显著减少时间。

缺点

  1. 创建索引和维护索引需要消耗时间,随着数据量的增加,所消耗的时间也会增加。
  2. 索引需要占用 磁盘空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间。
  3. 虽然大大的提高了查询速度,同时却会降低更新表的速度。因为在 RUD 操作时,需要动态维护索引。

索引的声明与使用

索引分类

MySQL 的索引包括 普通索引全文索引单例索引多列索引空间索引等。

  • 功能逻辑 上说,索引分为 4 种:普通索引、唯一索引、主键索引、全文索引;
  • 物理实现 上说,索引分为 2 中:聚簇索引、非聚簇索引;
  • 作用字段个数 上说,索引分为 2 中:单例索引、联合索引。
普通索引

创建普通索引的时候,不附加任何限制条件,只适用于提高查询效率。

唯一索引

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

单例索引

在表中的单个字段上创建索引。

多例索引

在表中的 多个字段组合 上创建索引,使用组合索引时遵循 最左前缀原则

全文索引

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

使用参数 FULLTEXT 可以设置索引为全文索引。全文索引只能创建在 CHARVARCHARTEXT 类型上,查询数据量较大的字符串类型的字段时,使用全文索引可以提高查询速度