Python自学 - 云代码空间
—— python自学——怎么学习python,自学python要多久?python+人工智能+人工智能+人工智能+大数据分析
二级索引(Secondary Index)是指除主键索引(聚集索引)之外的索引。
在 InnoDB 中,二级索引也被称为非聚集索引(Non-Clustered Index)。
假设有一个用户表:
CREATE TABLE users ( id INT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL, age INT, created_at DATETIME, INDEX idx_username (username), INDEX idx_email (email), INDEX idx_age_created (age, created_at) );
在这个表中:
单列二级索引例子: 假设我们执行查询:SELECT * FROM users WHERE username = 'zhang_san';
联合索引例子: 假设我们执行查询:SELECT * FROM users WHERE age = 25 AND created_at > '2023-01-01';
覆盖索引的情况: 假设我们执行查询:SELECT username, email FROM users WHERE username = 'zhang_san';
以实际存储的角度看:
聚集索引(主键索引)的结构: id(主键) -> [完整数据行] 二级索引(idx_username)的结构: username -> id(主键值)
当使用二级索引查询时,需要先找到主键,再通过主键找到完整数据,这就是"回表"操作。
这种结构使得 InnoDB 的二级索引比聚集索引占用空间小,但查询完整数据时需要额外的一次查找操作。