Я могу добиться того, что хочу, просто ужасно медленно, и я уверен, что есть лучший способ. Вот аннотация:
У меня есть две таблицы, которые я импортировал из двух текстовых файлов (через 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, но любые предложения приветствуются.