MySQL的索引有哪些
封面图
•
2025-11-06
•
MySQL
216
0
0
0
MySQL 中的索引是用于加速数据库查询的一种数据结构。它类似于书籍的目录,可以快速定位到需要的数据行。以下是 MySQL 中常见的几种索引类型: --- ### 一、按功能分类 1. **主键索引(PRIMARY KEY)** - 每个表只能有一个主键。 - 主键列的值必须唯一且不能为 NULL。 - 通常自动创建一个聚簇索引(InnoDB 存储引擎)。 2. **唯一索引(UNIQUE)** - 确保某列或某几列的值是唯一的。 - 允许有 NULL 值(但每个 NULL 值只能出现一次)。 - 可以有多个。 3. **普通索引(INDEX / KEY)** - 最基本的索引类型,没有唯一性限制。 - 用于加快查询速度。 4. **全文索引(FULLTEXT)** - 用于对文本内容进行搜索(如 `MATCH ... AGAINST`)。 - 支持中文和英文,但需要特定的存储引擎支持(如 InnoDB 5.6+ 支持全文索引)。 5. **空间索引(SPATIAL)** - 用于地理空间数据类型(如 POINT, LINESTRING, POLYGON)。 - 仅适用于 MyISAM 和 InnoDB 存储引擎。 --- ### 二、按存储结构分类 1. **B-Tree 索引(默认)** - 最常用的索引类型。 - 适用于大多数查询条件(=, >, <, BETWEEN, LIKE 等)。 - InnoDB 和 MyISAM 默认使用 B-Tree。 2. **Hash 索引** - 基于哈希表实现,只支持等值查询(=)。 - 速度快,但不支持范围查询和排序。 - 仅适用于 Memory 存储引擎(部分版本支持)。 3. **Fulltext 索引** - 如前所述,用于全文检索。 4. **RTree 索引(空间索引)** - 用于空间数据类型的索引。 --- ### 三、按索引字段数量分类 1. **单列索引(Single-column Index)** - 仅在一个字段上建立的索引。 2. **复合索引(Composite Index / Multi-column Index)** - 在多个字段上建立的索引。 - 查询时如果使用了索引的最左前缀,才能命中索引。 --- ### 四、按存储引擎支持情况 不同的存储引擎对索引的支持不同: | 存储引擎 | 支持的索引类型 | |----------|----------------| | InnoDB | B-Tree, Hash (自 8.0), Fulltext, Spatial | | MyISAM | B-Tree, Fulltext, Spatial | | Memory | Hash, B-Tree | | Archive | 无索引(仅支持主键) | --- ### 五、索引的使用建议 - 避免在频繁更新的列上建立索引。 - 尽量使用**覆盖索引**(即查询的字段都在索引中)。 - 对于大表,避免全表扫描,合理使用索引。 - 注意索引的**最左前缀原则**,尤其是复合索引。 --- 如果你需要了解如何创建或优化索引,也可以告诉我具体场景,我可以提供更详细的建议。
上一篇:
MySQL - 常用存储引擎区别总结
下一篇:
mysql数据库分表及实现
标题录入,一次不能超过6条
留言
评论