MySQL中Student表能否同时设置ID Primary Index与Name Clustered Index?
问题解答:MySQL表能否同时存在主键索引与Name字段的聚集索引?
假设MySQL数据库中有一张Student表,表结构如下(数据量约百万条):
- ID (PK)
- Name
- Aadhaar_ID
- Address
- Admission_year
请问该表能否同时拥有以下两个索引?- ID上的Primary Index
- Name上的Clustered Index
在MySQL的InnoDB引擎里,一张表只能有一个聚集索引,这是由聚集索引的本质决定的——聚集索引是按照索引键的顺序来物理存储表数据的,一张表的物理存储顺序只能有一套。
InnoDB默认会把主键(也就是这里的ID)作为聚集索引,此时ID上的主键索引就是这张表的聚集索引,数据会按ID的顺序存在磁盘上。
要是你想给Name字段建聚集索引,就会和已有的主键聚集索引冲突,因为表数据不能同时按照ID和Name两种顺序来物理排序。所以这两个索引没法同时存在,只能二选一:要么保留ID作为主键(同时它就是聚集索引),要么把Name设为聚集索引(这时ID只能做成普通的唯一索引,不能再是主键形式的聚集索引)。
内容的提问来源于stack exchange,提问作者Aditya Goel
相关产品推荐
相关产品推荐

