Ускорьте вставку идентификаторов из одной большой таблицы MySQL в другую - PullRequest
0 голосов
/ 28 августа 2018

Я могу добиться того, что хочу, просто ужасно медленно, и я уверен, что есть лучший способ. Вот аннотация:

У меня есть две таблицы, которые я импортировал из двух текстовых файлов (через LOAD DATA INFILE). Между этими таблицами еще нет взаимосвязи между первичным и внешним ключами.

Таблица 1 - События: 1,5 миллиона строк (person_id значения пусты)

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| event_id     | int(11)      | NO   | PRI | NULL    | auto_increment |
| person_id    | int(11)      | NO   | UNI | NULL    |                |
| event_details| longtext     | NO   |     | NULL    |                | 
| person_name  | varchar(30)  | NO   |     | NULL    |                |
| mother_name  | varchar(30)  | NO   |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+

Таблица 2 - Люди: 140 000 строк

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| person_id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| person_name  | varchar(30)  | NO   |     | NULL    |                |
| mother_name  | varchar(30)  | NO   |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+

Я пытаюсь вставить person_id из таблицы people в таблицу events.

Я пробовал несколько методов, в основном циклически проходя по каждой строке таблицы events, найдите person_id в таблице people, используя person_name и mother_name в текущей строке из events Таблица. Затем вставьте person_id в таблицу events.

Мой текущий запрос занимает около 5 дней, чтобы обновить все 1,5 миллиона строк в таблице events. Как я могу сделать это быстрее?

Я использую laravel и php, но любые предложения приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...