MySQL索引按存储结构分B-Tree、Hash、Full-Text和R-Tree,按功能分普通、唯一、主键、组合和外键索引,按存储方式分聚簇和二级索引,合理选择可提升查询性能。

MySQL数据库中的索引类型主要根据存储结构、功能用途和数据唯一性等方面进行划分。合理选择索引类型可以显著提升查询性能。
1. 按存储结构分类
这是最常见的分类方式,主要取决于索引底层使用的数据结构。
-
B-Tree 索引:MySQL中最常用的索引类型,InnoDB和MyISAM存储引擎默认使用B+树结构。适合全值匹配、范围查询、排序和分组操作。适用于CHAR、VARCHAR、INT等类型字段。
-
Hash 索引:基于哈希表实现,仅支持等值查询(=, IN),不支持范围查询或排序。Memory存储引擎默认使用Hash索引,InnoDB对自适应哈希索引也有内部支持。
-
Full-Text 索引:用于全文搜索,支持文本内容的关键词检索。MyISAM早期支持,InnoDB从MySQL 5.6版本开始支持。适用于CHAR、VARCHAR和TEXT类型。
-
R-Tree 索引:用于空间数据类型(如GEOMETRY),支持地理坐标、多边形等空间数据的快速检索。常用于GIS应用。
2. 按逻辑功能分类
这类索引从应用层面定义其作用,开发者在建表时可明确指定。
-
普通索引(Index):最基本的索引类型,允许重复值和NULL值,无任何限制。
-
唯一索引(Unique Index):要求索引列的值必须唯一,但允许有NULL值(仅一个NULL可存在,视具体引擎而定)。
-
主键索引(Primary Key):特殊的唯一索引,不允许NULL值。每张表只能有一个主键,InnoDB会自动为主键创建聚簇索引。
-
组合索引(Composite Index):在多个列上建立的索引,遵循最左前缀原则。例如在 (A, B, C) 上建索引,则 A、(A,B)、(A,B,C) 查询可用,但单独 B 或 C 不可用。
-
外键索引(Foreign Key):用于维护表间引用完整性,通常需要手动在关联字段上创建索引以提高性能。
3. 按物理存储方式分类
主要区分索引记录与数据行的组织方式。
-
聚簇索引(Clustered Index):数据行按索引顺序物理存储。InnoDB表必须有聚簇索引,默认为主键,若无主键则选第一个唯一非空索引,否则自动生成隐藏ROWID作为聚簇索引。
-
二级索引(Secondary Index):也叫非聚簇索引,索引中保存的是主键值而非数据行地址。通过二级索引查找需回表查询主键对应的数据行。
基本上就这些。实际使用中应结合查询场景选择合适的索引类型,避免过度索引影响写入性能。
以上就是mysql数据库中索引类型有哪些的详细内容,更多请关注php中文网其它相关文章!