mysql工作台:密钥疑难解答

ubbxdtey  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(349)

我有一个 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 那是指它自己?

djp7away

djp7away1#

/!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时,才再次进行此操作

相关问题