繁体   English   中英

表可以同时具有主索引和聚集索引吗

[英]Can table have both primary & clustered index together

假设我们在 MYSQL 数据库中有一个 Student 表,其模式如下。 这张表有大约百万条记录。

  • 身份证(公钥)
  • 姓名
  • Aadhaar_ID
  • 地址
  • 入学_年份

上面的表格可以同时有下面的吗?

  • ID 上的主索引。
  • 名称的聚簇索引。

由于对数据进行排序是强制性的(用于创建 Clustered-Index 数据),因此不可能将上述 2 个索引放在一起。 我们只能有两个。

MySQL (InnoDB) 规则:

  • 只有 1 个聚簇索引。
  • PRIMARY KEY必须是 UNIQUE 并且由非 NULL 列组成。
  • PK 确定数据的 B+Tree 中项目的顺序。
  • 任何类型的索引(包括 PK)中存在间隙都是可以的。 (在许多情况下,正常操作会导致AUTO_INCREMENT id 出现间隙。)

据推测,“名称”不能是唯一的?

所以,这样做:

id INT UNSIGNED NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY(name, id),  -- to make access via `name` more efficient
INDEX(id)   -- sufficient to keep AUTO_INCREMENT happy

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM