公司动态

MySQL索引分类:主键索引、唯一索引、普通索引、复合索引,用法区别

📅 2026/7/15 18:32:57
MySQL索引分类:主键索引、唯一索引、普通索引、复合索引,用法区别
前言MySQL 索引看似很多其实新手只需要掌握4 大类索引主键索引、唯一索引、普通索引、复合索引。很多人建索引乱建、建错类型导致性能没提升、甚至索引失效。本篇一次性讲清各自特点、场景、创建语句、区别对比。一、主键索引Primary Key特点唯一、非空一张表只能有一个主键索引InnoDB 主键索引就是聚簇索引叶子节点存整行数据速度最快适用场景自增 id、订单 id、唯一标识字段。创建语句id INT PRIMARY KEY AUTO_INCREMENT二、唯一索引Unique Index特点字段值不可重复允许为 NULL可多个 null一张表可以有多个唯一索引适用场景手机号、邮箱、账号、身份证号。创建语句phone VARCHAR(11) UNIQUE三、普通索引Normal Index特点最基础索引允许重复、允许为空只为提升查询速度无约束能力适用场景经常用于 WHERE、ORDER BY、JOIN 的普通业务字段状态、分类、时间。创建语句INDEX idx_status (status)四、复合索引联合索引特点一个索引包含多个字段遵循最左前缀原则可以覆盖多字段查询性能优于多个单字段索引适用场景经常一起查询的字段例如用户查询经常同时按「状态时间」筛选。创建语句INDEX idx_status_time (status, create_time)五、四种索引核心区别对照表索引类型唯一非空数量限制用途主键索引是是1个/表唯一标识、最快查询唯一索引是否多个/表保证字段不重复普通索引否否多个/表单纯加速查询复合索引否否多个/表多字段联合查询加速六、开发选型口诀唯一标识 →主键索引不许重复的业务字段 →唯一索引普通查询字段 →普通索引多个字段经常一起查 →复合索引