常见索引类型

简介: 本文档系统梳理了数据库索引的多维度分类:按存储结构分为聚簇与非聚簇索引,按约束性分为普通、唯一及主键索引,按字段数量分为单列与组合索引,按功能支持全文与空间索引,按底层结构涵盖B+树与哈希索引,详述其定义、适用场景及核心特性。

分类维度

索引类型

核心定义

支持引擎

适用场景

关键特点 / 注意事项

存储结构

聚簇索引(Clustered)

数据与索引物理存储绑定,索引即数据(索引叶子节点存储完整数据行)

InnoDB(默认)

主键查询、高频根据主键 / 聚簇键查询

1. 每张表仅 1 个聚簇索引;2. 优先以主键为聚簇键,无主键则选唯一非空列,否则生成隐藏 row_id;3. 主键查询效率极高

非聚簇索引(Non-Clustered)

数据与索引物理分离,索引叶子节点存储数据行指针 / 主键值(间接指向数据)

MyISAM、InnoDB(二级索引)、Memory

非主键字段查询(如用户名、手机号查询)

1. 每张表可多个非聚簇索引;2. 查询需 “回表”(InnoDB)或 “通过指针找数据”(MyISAM);3. 存储开销比聚簇索引小

约束特性

普通索引(Normal)

无约束限制,仅用于加速查询的基础索引

所有支持索引的引擎

普通查询场景(如商品分类查询、文章列表查询)

1. 允许重复值和 NULL;2. 无额外约束逻辑,创建 / 维护成本低

唯一索引(Unique)

索引列值必须唯一(允许 NULL,且 NULL 可多个),兼具约束和加速查询功能

InnoDB、MyISAM、Memory

需保证字段唯一性的场景(如手机号、邮箱、身份证号)

1. 避免重复数据,插入重复值会报错;2. 查询效率略高于普通索引(索引树更紧凑);3. 主键索引是特殊的唯一索引(不允许 NULL)

主键索引(Primary Key)

特殊的唯一索引,不允许 NULL,默认作为 InnoDB 的聚簇键

所有支持索引的引擎

表的唯一标识(如 user_id、order_id)

1. 每张表仅 1 个主键索引;2. InnoDB 中自动作为聚簇索引,MyISAM 中为普通唯一非聚簇索引;3. 优先用自增 INT/BIGINT 作为主键

字段数量

单列索引(Single-Column)

仅基于单个字段创建的索引

所有支持索引的引擎

单字段查询(如按手机号查用户、按状态查订单)

1. 创建简单、维护成本低;2. 仅能加速该字段的查询条件

组合索引(Composite/Multi-Column)

基于多个字段组合创建的索引(字段顺序影响索引效率)

InnoDB、MyISAM、Memory

多字段联合查询(如按 “用户 ID + 订单状态” 查订单、“用户名 + 手机号” 验证)

1. 遵循 “最左前缀原则”(查询需匹配索引字段顺序);2. 可覆盖部分多字段查询,减少回表;3. 字段顺序建议:高区分度字段在前

查询功能

全文索引(Fulltext)

针对文本内容的语义检索索引,支持关键词匹配(而非前缀 / 后缀模糊匹配)

InnoDB(5.6+)、MyISAM

文章内容搜索、商品描述搜索、评论检索

1. 支持 CHAR/VARCHAR/TEXT 字段;2. 忽略短词(默认 < 4 字符);3. 高并发 / 复杂检索建议用 Elasticsearch 替代

空间索引(Spatial)

针对地理空间数据的索引,支持位置关系查询(如距离、包含)

InnoDB(5.7+)、MyISAM

附近位置查询(如 “1 公里内餐厅”)、区域筛选

1. 支持 POINT/LINESTRING/POLYGON 等空间类型;2. 字段不能为 NULL;3. 需用空间函数(如 ST_Distance_Sphere)查询

索引结构

B + 树索引(B+Tree)

主流索引结构,所有数据存储在叶子节点,叶子节点按顺序链表连接

InnoDB、MyISAM、Memory(可选)

绝大多数查询场景(等值、范围、排序、分页)

1. 平衡树结构,查询效率稳定(O (log n));2. 支持范围查询和排序;3. InnoDB/MyISAM 默认索引结构

哈希索引(Hash)

基于哈希表实现,通过字段哈希值快速定位数据,不支持范围查询

Memory(默认)、InnoDB(自适应哈希索引,AHI)

高频等值查询(如缓存表、字典表)

1. 等值查询极快,范围 / 排序查询失效;2. 不支持模糊匹配;3. InnoDB 的 AHI 为自动开启,不可手动创建

相关文章
何为跨域?
URL由协议、子域名、主域名、端口和资源路径组成,任一部分不同即属不同域。跨域指不同域间相互访问资源,因安全策略常受限制。
|
6月前
|
存储 安全 算法
跨境电商用户IP真实性评估:高精度查询与离线库的融合策略
在跨境电商中,评估用户IP真实性是防止欺诈、优化营销的关键。本文将介绍如何结合高精度IP地址查询定位与IP离线库,通过技术手段验证IP来源。
跨境电商用户IP真实性评估:高精度查询与离线库的融合策略
|
3月前
|
人工智能 程序员 C语言
Python 与 C++、C 语言的区别及选择指南
C 语言:语法相对复杂,变量需要显式声明数据类型,代码块用大括号表示。例如:
476 3
|
11月前
|
监控 Linux iOS开发
PyCharm启动项目和调试项目
本文介绍了在 PyCharm 中启动和调试 Python 项目的详细步骤,涵盖单文件运行、配置管理、命令行工具使用、断点调试、变量监控、远程调试及常见问题解决方案,帮助开发者高效利用 PyCharm 的调试功能提升开发效率。
2277 4
|
6月前
|
SQL 关系型数据库 Nacos
【2026最新 架构环境安装篇四】Docker安装Nacos3.x详细教程
本文介绍了如何通过Docker快速部署Nacos 3.1.0并连接MySQL数据库。内容包括拉取镜像、导入SQL脚本、生成密钥及配置认证信息,并通过环境变量设置时区、数据库连接参数等,最终启动Nacos服务,实现高效本地或生产环境搭建。
1522 3
|
机器学习/深度学习 自然语言处理 算法
词嵌入(Word Embeddings)
词嵌入(Word Embeddings)
|
存储 安全 算法
《深度剖析:软总线设备认证机制如何筑牢互联安全防线》
在智能设备互联互通的时代,软总线作为数据交互的核心,其安全性尤为重要。设备认证机制通过生成唯一身份标识(如椭圆曲线公私钥对)确保合法设备接入。信任关系的建立包括PIN码认证和无交互认证等方式,结合加密与完整性保护技术,防止信息被窃取或篡改。此外,通过信任链拓展与管理,软总线实现跨设备安全互联。这一机制为智能家居、智能办公等场景提供了可靠保障,并将随技术发展持续优化,适应复杂网络环境。
341 7
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
存储 算法 Java
Java 内存管理与优化:掌控堆与栈,雕琢高效代码
Java内存管理与优化是提升程序性能的关键。掌握堆与栈的运作机制,学习如何有效管理内存资源,雕琢出更加高效的代码,是每个Java开发者必备的技能。
455 5
|
SQL 关系型数据库 MySQL
MySQL多条SQL语句合并实现
【5月更文挑战第11天】
1163 0

热门文章

最新文章