聚簇索引和二级索引

在数据库系统中,二级索引(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 列上创建二级索引,查询速度将大幅提升。数据库将不再需要扫描整张表,而是通过二级索引迅速找到相应的行。

总结:

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

相关推荐
ly76897 分钟前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档
小羊没烦恼!41 分钟前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
注塑机数据采集联网1 小时前
如何解决注塑机数据采集联网对接MES系统数据WiFi传输数据不稳问题
大数据·数据库·物联网·数据挖掘·数据分析
黄俊懿1 小时前
【架构师从入门到进阶】第六章:服务集群优化——第八节:线程数公式
java·服务器·数据库·分布式·性能优化·架构·系统架构
geovindu1 小时前
sql: JSON and XML Data Handling in SQL using mysql 9.0
数据库·sql·mysql·数据库开发
hackchen1 小时前
LangChain 学习第 3 课 - 输出解析器(Output Parser)
数据库·学习·langchain
Mortalbreeze1 小时前
MySQL 基础篇(九):从 B+ 树到索引优化,全面理解 MySQL 索引
数据库·mysql
泡海椒2 小时前
JQuick-SQL SELECT 投影:字段、别名与表达式查询
数据库·sql
猫咪很可爱2 小时前
mysqldump 失败常见场景
数据库·sql·mysql
大明二代2 小时前
从零构建 Mastra RAG MVP:DeepSeek、SiliconFlow 与 PostgreSQL/pgvector 实战
javascript·数据库·人工智能