首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL 的索引类型有哪些?

MySQL 的索引类型有哪些?

原创
作者头像
代码小李
发布2025-01-28 17:29:04
发布2025-01-28 17:29:04
7560
举报

MySQL 支持多种索引类型,每种索引类型都有其特定的用途和特点。以下是常见的 MySQL 索引类型及其主要区别:

1. 普通索引(Normal Index)

  • 定义:最基本的索引类型,没有唯一性限制。
  • 用途:提高查询速度。
  • 创建方式
代码语言:sql
复制
CREATE INDEX idx_name ON table_name (column_name);

2. 唯一索引(Unique Index)

  • 定义:索引列的值必须唯一,但允许有空值。
  • 用途:确保数据的唯一性。
  • 创建方式
代码语言:sql
复制
CREATE UNIQUE INDEX idx_name ON table_name (column_name);

3. 主键索引(Primary Key Index)

  • 定义:一种特殊的唯一索引,不允许有空值。
  • 用途:作为表的主键,唯一标识表中的每一行。
  • 创建方式
代码语言:sql
复制
ALTER TABLE table_name ADD PRIMARY KEY (column_name);

4. 全文索引(Full-text Index)

  • 定义:用于全文搜索,支持复杂的文本匹配。
  • 用途:适用于搜索引擎等需要全文检索的场景。
  • 创建方式
代码语言:sql
复制
CREATE FULLTEXT INDEX idx_name ON table_name (column_name);

5. 组合索引(Composite Index)

  • 定义:在多个列上创建的索引。
  • 用途:提高多列查询的性能。
  • 创建方式
代码语言:sql
复制
CREATE INDEX idx_name ON table_name (column1, column2);

6. 空间索引(Spatial Index)

  • 定义:用于空间数据类型的索引,如 GIS 数据。
  • 用途:提高空间数据查询的性能。
  • 创建方式
代码语言:sql
复制
CREATE SPATIAL INDEX idx_name ON table_name (spatial_column);

7. 聚集索引(Clustered Index)

  • 定义:表的数据行与索引项存储在一起,每个表只能有一个聚集索引。
  • 用途:提高按索引顺序访问数据的性能。
  • 创建方式
    • InnoDB 表的主键索引默认是聚集索引。
    • 如果没有显式指定主键,InnoDB 会使用第一个唯一索引作为聚集索引。
    • 如果没有唯一索引,InnoDB 会创建一个隐藏的聚集索引。

8. 非聚集索引(Non-Clustered Index)

  • 定义:索引项与表的数据行分开存储,每个表可以有多个非聚集索引。
  • 用途:提高查询性能,特别是当查询条件不涉及聚集索引时。
  • 创建方式
    • 默认情况下,除了聚集索引外,其他索引都是非聚集索引。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 普通索引(Normal Index)
  • 2. 唯一索引(Unique Index)
  • 3. 主键索引(Primary Key Index)
  • 4. 全文索引(Full-text Index)
  • 5. 组合索引(Composite Index)
  • 6. 空间索引(Spatial Index)
  • 7. 聚集索引(Clustered Index)
  • 8. 非聚集索引(Non-Clustered Index)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档