聚簇索引和二级索引

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

总结:

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

相关推荐
He.ZaoCha23 分钟前
函数-1-字符串函数
数据库·sql·mysql
二当家的素材网31 分钟前
Centos和麒麟系统如何每天晚上2点10分定时备份达梦数据库
linux·数据库·centos
白仑色38 分钟前
Oracle 存储过程、函数与触发器
数据库·oracle·数据库开发·存储过程·plsql编程
头发那是一根不剩了2 小时前
Spring Boot 多数据源切换:AbstractRoutingDataSource
数据库·spring boot·后端
草履虫建模2 小时前
Redis:高性能内存数据库与缓存利器
java·数据库·spring boot·redis·分布式·mysql·缓存
泊浮目3 小时前
未来数据库硬件-计算篇
数据库·云计算·操作系统
靖顺3 小时前
【OceanBase诊断调优】—— 执行计划显示分区 PARTITIONS[P0SP9] 如何查询是哪个分区?
数据库·oracle·oceanbase
KIDAKN4 小时前
MySQL 存储结构
数据库·mysql
Code季风4 小时前
SQL关键字快速入门:HAVING 分组后的条件过滤
数据库·sql·mysql
程序猿ZhangSir4 小时前
Redis 缓存进阶篇,缓存真实数据和缓存文件指针最佳实现?如何选择?
数据库·redis·缓存