索引与外键信息要点
- SHOW INDEX FROM 表 看索引名、列、是否唯一、基数
- STATISTICS 表与 SHOW INDEX 等价,可程序化筛选
- KEY_COLUMN_USAGE 查外键:被引用表与列
- REFERENTIAL_CONSTRAINTS 看外键约束的更新删除规则
- 跨库找所有外键:WHERE REFERENCED_TABLE_NAME IS NOT NULL
- 主键信息也能在 KEY_COLUMN_USAGE 里通过 CONSTRAINT_NAME='PRIMARY' 取到
索引与外键信息示例
-- 某表全部索引
SHOW INDEX FROM orders;
-- 查外键:谁引用了 users 表
SELECT TABLE_NAME, COLUMN_NAME,
REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'shop'
AND REFERENCED_TABLE_NAME = 'users';
避坑提醒:删外键前先到 KEY_COLUMN_USAGE 确认 CONSTRAINT_NAME,DROP FOREIGN KEY 用的就是这个约束名而非列名。