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



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

  • ID (PK)
  • <
  • 名称/gh>
  • Aadhaar_ID
  • <
  • 地址/gh>
  • Admission_year

上面的表可以同时包含以下内容吗?

  • 主ID索引。
  • 名称聚集索引。

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

MySQL (InnoDB)规则:

  • 只有一个聚集索引。
  • PRIMARY KEY必须是UNIQUE ',并且由非null列组成。
  • PK决定数据的B+树中项目的顺序。
  • 任何类型的索引都可以有间隙,包括PK(正常操作导致AUTO_INCREMENTid有间隙的情况很多)

据推测,"name"不能独一无二?

那么,这样做:

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

相关内容

  • 没有找到相关文章

最新更新