执行CREATE TABLE语句后fk1索引未按预期创建,求原因解析
为何fk1索引未在phpMyAdmin中显示?
核心原因
MySQL处理外键约束时,会优先复用已存在的合适索引,不会创建冗余索引。你的表结构中,主键定义为PRIMARY KEY (mentor_ID, mentee_ID, project),这个复合主键索引以mentor_ID作为第一列,完全满足fk1外键(关联mentor_ID)对索引的要求——外键仅需要关联列存在一个索引(单列索引或复合索引的前缀列均可)。
因此MySQL不会为fk1单独创建新索引,所以在phpMyAdmin的索引列表里看不到名为fk1的独立索引,但实际上主键索引已经在为fk1外键约束提供支撑。
对比fk2的情况
fk2关联的mentee_ID并非已有索引的前缀列(主键索引的前缀是mentor_ID),所以MySQL会自动为fk2创建对应的单列索引,你应该能在phpMyAdmin中看到这个索引。
验证方法
执行以下SQL语句查看表的所有索引:
SHOW INDEX FROM mentorships;
执行结果中会显示主键索引(PRIMARY)包含mentor_ID作为第一列,这就是fk1外键依赖的索引,不存在单独的fk1索引是正常现象。
内容的提问来源于stack exchange,提问作者Eddie
相关产品推荐
相关产品推荐

