MySQL Workbench: средства устранения неисправностей - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть сценарий 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 голосов
/ 06 сентября 2018
/!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
...