聚簇索引和二级索引

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

总结:

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

相关推荐
lingllllove13 分钟前
Redis脑裂问题详解及解决方案
数据库·redis·缓存
字节全栈_BjO29 分钟前
mysql死锁排查_mysql 死锁问题排查
android·数据库·mysql
微光守望者37 分钟前
Redis常见命令
数据库·redis·缓存
martian6652 小时前
第六篇:事务与并发控制
数据库
x-cmd3 小时前
[250202] DocumentDB 开源发布:基于 PostgreSQL 的文档数据库新选择 | Jekyll 4.4.0 发布
数据库·postgresql·开源
是小崔啊8 小时前
事务03之MVCC机制
数据库·mysql·事务·
LUCIAZZZ12 小时前
简单的SQL语句的快速复习
java·数据库·sql
Elastic 中国社区官方博客14 小时前
使用真实 Elasticsearch 进行高级集成测试
大数据·数据库·elasticsearch·搜索引擎·全文检索·jenkins·集成测试
@_@哆啦A梦14 小时前
Redis 基础命令
java·数据库·redis
fajianchen14 小时前
MySQL 索引存储结构
数据库·mysql