聚簇索引和二级索引

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

总结:

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

相关推荐
bkspiderx3 分钟前
libmysqlclient:MySQL 底层客户端库的全面指南
数据库·mysql·mysqlclient·libmysqlclient·mysql 底层客户端库
Arva .3 分钟前
详细描述一条 SQL 在 MySQL 中的执行过程
数据库·sql·mysql
数据库学啊7 分钟前
好用的车联网时序数据库机构有哪些
大数据·数据库·时序数据库
Elastic 中国社区官方博客23 分钟前
如何通过个性化、分群感知排序来提升电商搜索相关性
大数据·数据库·elasticsearch·搜索引擎·全文检索
urkay-28 分钟前
Android 数据库操作线程安全吗
android·数据库·安全
ZeroNews内网穿透30 分钟前
RStudio Server 结合 ZeroNews,实现远程访问管理
运维·服务器·网络·数据库·网络协议·安全·web安全
李白你好35 分钟前
Redis 漏洞图形化利用工具
数据库·redis·缓存
JosieBook41 分钟前
【数据库】IoTDB数据库与时序大模型深度融合,开启数据智能分析新范式
数据库·iotdb
Logic1011 小时前
《Mysql数据库应用》 第2版 郭文明 实验4 视图和索引的构建与使用核心操作与思路解析
数据库·sql·mysql·学习笔记·计算机网络技术·形考作业·国家开放大学
码农12138号1 小时前
网络安全-SQL注入
数据库·web安全·sql注入