MySQL 索引
索引
概述
索引(Index) 是帮助 MySQL 高效获取数据的数据结构.
索引的本质:索引是数据结构,可以理解为"排好序的快速查找结构",满足特定查找算法。
优点
- 类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本。
- 通过创建唯一索引,可以保证数据库表中每一行数据的唯一性。
- 在实现数据的参考完整性方面,可以加速表和表之间的连接。
- 在分组和排序操作时,可以显著减少时间。
缺点
- 创建索引和维护索引需要消耗时间,随着数据量的增加,所消耗的时间也会增加。
- 索引需要占用 磁盘空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间。
- 虽然大大的提高了查询速度,同时却会降低更新表的速度。因为在 RUD 操作时,需要动态维护索引。
索引的声明与使用
索引分类
MySQL 的索引包括 普通索引、全文索引 、单例索引、多列索引 和 空间索引等。
- 从 功能逻辑 上说,索引分为 4 种:普通索引、唯一索引、主键索引、全文索引;
- 从 物理实现 上说,索引分为 2 中:聚簇索引、非聚簇索引;
- 从 作用字段个数 上说,索引分为 2 中:单例索引、联合索引。
普通索引
创建普通索引的时候,不附加任何限制条件,只适用于提高查询效率。
唯一索引
使用 UNIQUE 参数 可以设置索引为唯一性索引,在创建唯一性索引的时候,限制该索引的值必须是唯一的,但允许有空值。
单例索引
在表中的单个字段上创建索引。
多例索引
在表中的 多个字段组合 上创建索引,使用组合索引时遵循 最左前缀原则。
全文索引
全文索引(也称全文检索)是目前 搜索引擎 使用的一种关键技术。它能够利用【分词技术】等多种算法智能分析出文本文字中关键词的频率和重要性,然后按照一定的算法规则智能的筛选出我们想要的搜索结果。全文索引非常适合大型数据集,对于小的数据集,它的用处比较小。
使用参数 FULLTEXT 可以设置索引为全文索引。全文索引只能创建在 CHAR、VARCHAR 或 TEXT 类型上,查询数据量较大的字符串类型的字段时,使用全文索引可以提高查询速度。