我有一个php
脚本,它创建了一个大型的临时mysql表。
创建此表需要花费大量时间(超过30分钟!)。因此,我决定对其进行故障排除。我确定问题出在Keys
的创建上。
我曾经用MySQL WorkBench
来做到这一点,现在我很难理解这个声明:
/!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 /;
PRIMARY KEY (`CONC_ID`,`d_id_2`),
KEY `vo_marque_id` (`VM_id`),
KEY `CONC_ID` (`CONC_ID`,`d_id_2`)
/!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS /;
这是否意味着我有CONC_ID
的重复密钥?还是我有一个指向自己的Key
?
答案 0 :(得分:2)
/!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 /;
/!40014
的意思是“仅当MySQL服务器版本至少为4.0.14时才执行此操作SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS
将foreign_key_checks
的当前值存储在变量old_foreign_key_checks
FOREIGN_KEY_CHECKS=0
禁用外键检查PRIMARY KEY (`CONC_ID`,`d_id_2`),
KEY `vo_marque_id` (`VM_id`),
KEY `CONC_ID` (`CONC_ID`,`d_id_2`)
conc_id
是多余的,因为它与主键相同。您可以使用alter table <your_table> drop index conc_id;
/!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS /;
foreign_key_checks
的值。同样,仅当版本大于4.0.14