假设我们在MYSQL数据库中有一个Student表,其模式如下:这个表大约有一百万条记录。
- ID (PK) <
- 名称/gh>
- Aadhaar_ID <
- 地址/gh>
- Admission_year
上面的表可以同时包含以下内容吗?
- 主ID索引。
- 名称聚集索引。
由于对数据进行排序是强制性的(对于创建数据的Clustered-Index),因此不可能将上述两个索引放在一起。
MySQL (InnoDB)规则:
- 只有一个聚集索引。
PRIMARY KEY
必须是UNIQUE ',并且由非null列组成。- PK决定数据的B+树中项目的顺序。
- 任何类型的索引都可以有间隙,包括PK(正常操作导致
AUTO_INCREMENT
id有间隙的情况很多)
据推测,"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