MySQL Workbench:故障排除键

时间:2018-09-06 09:35:38

标签: mysql key mysql-workbench

我有一个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

1 个答案:

答案 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_CHECKSforeign_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