聚簇索引和二级索引

在数据库系统中,二级索引(Secondary Index)是用来加速查询的辅助索引,通常与主键(或聚簇索引)配合使用。

主要概念:

  • 主键索引(Primary Index) :主键索引通常基于表中的主键字段,并且索引的数据按照主键的顺序存储。在 InnoDB 中,主键索引称为聚簇索引(Clustered Index),数据行存储在索引的叶子节点中。

  • 二级索引(Secondary Index):二级索引是针对非主键列(或非唯一键列)创建的索引。它为那些在主键列以外的列上的查询提供快速访问。例如,如果经常在姓名或邮箱字段上进行查询,则可以在这些列上创建二级索引。

特点与作用:

  1. 提高查询性能:二级索引通过提供对表中特定列的快速查找,减少全表扫描,显著提高查询性能。

  2. 指向主键:在 InnoDB 引擎中,二级索引存储了对应列的值以及该行数据的主键值。通过二级索引找到匹配的列后,数据库会使用主键去查找完整的数据行。

  3. 不影响表的物理存储顺序:与主键索引不同,二级索引并不会影响数据在表中的物理存储顺序。它只是额外创建的一个结构,帮助数据库快速找到数据。

例子:

假设我们有一个名为 users 的表:

sql 复制代码
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    name VARCHAR(255),
    email VARCHAR(255),
    age INT
);
  • 主键索引是 user_id 列上的。
  • 如果我们经常按 email 列进行查询,例如 SELECT * FROM users WHERE email = 'example@example.com',我们可以创建一个二级索引来加速这一查询:
sql 复制代码
CREATE INDEX idx_email ON users (email);

通过在 email 列上创建二级索引,查询速度将大幅提升。数据库将不再需要扫描整张表,而是通过二级索引迅速找到相应的行。

总结:

二级索引主要用于提升非主键列上的查询性能。它不改变数据的物理存储顺序,而是为数据表增加一个额外的结构,使数据库可以更高效地处理特定列的查询。

相关推荐
晋阳十二夜5 小时前
【压力测试之_Jmeter链接Oracle数据库链接】
数据库·oracle·压力测试
GDAL7 小时前
Node.js v22.5+ 官方 SQLite 模块全解析:从入门到实战
数据库·sqlite·node.js
DCTANT8 小时前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss
AI、少年郎10 小时前
Oracle 进阶语法实战:从多维分析到数据清洗的深度应用(第四课)
数据库·oracle
赤橙红的黄10 小时前
自定义线程池-实现任务0丢失的处理策略
数据库·spring
DataGear11 小时前
如何在DataGear 5.4.1 中快速制作SQL服务端分页的数据表格看板
javascript·数据库·sql·信息可视化·数据分析·echarts·数据可视化
weixin_4383354011 小时前
分布式锁实现方式:基于Redis的分布式锁实现(Spring Boot + Redis)
数据库·redis·分布式
码不停蹄的玄黓11 小时前
MySQL Undo Log 深度解析:事务回滚与MVCC的核心功臣
数据库·mysql·undo log·回滚日志
Qdgr_11 小时前
价值实证:数字化转型标杆案例深度解析
大数据·数据库·人工智能
数据狐(DataFox)11 小时前
SQL参数化查询:防注入与计划缓存的双重优势
数据库·sql·缓存