如果主键是 table 中的聚集索引,那么其他列是例如任何唯一列是 table 是非聚集的吗?

If primary key is clustered index in a table then the other columns are eg any unique column is a table is non clustered?

CREATE TABLE people(
personID int,
FirstName VARCHAR(255),
LastNanme VARCHAR(255),
Address VARCHAR(255),
City VARCHAR(255)
PRIMARY KEY (PERSONID)
);

是的,一个给定的table只能有一个聚簇索引,在InnoDB中,它永远是主键。 table 上的所有其他索引都是 non-clustered。

聚簇索引还存储 table 的所有列,包括 non-indexed 列,因此在您的示例中,名字、姓氏、地址和城市作为字段存储在叶节点中聚簇索引。

二级索引只存储索引列,以及table的主键。因此,通过二级索引搜索 table 的所有列将执行两次索引搜索:首先在二级索引中找到您正在搜索的值,这将在值所在的行中生成主键值你正在寻找发生。其次,主键值将用于搜索聚集索引,以获取其他 non-indexed 列。 InnoDB 存储引擎自动执行这两个步骤,并将所有列提供给您。