Я сделал таблицу поиска для всех моих таблиц. То, что я пытаюсь сделать, это то, что он должен делать, соответствовать идентификаторам сопоставленным значениям.
Я использую mysql верстак, сервер 5.7 (последняя версия не работает для меня).
У меня есть тысячи значений и 6 таблиц. Для простого объяснения, скажем, у меня есть 3 таблицы.
------------------table1------------------
| t1ID | Person | Purchase| Code |
| 1 | Jon | 50 | 111 | /* Code = t3ID */
| 2 | Dan | 100 | 222 | /* Purchase = Buyer in table2 */
| 3 | Pete | 200 | 333 |
(Many more)
------------------table2------------------
| t2ID | Buyer | Date | Barcode |
| 1 | 200 | 1/1/20 | ABC111 | /* Buyer = Purchase in table1 */
| 2 | 100 | 2/1/20 | ABC222 | /* Barcode = Item_ID in table3 */
| 3 | 50 | 3/1/20 | ABC333 |
(Many more)
------------------table3---------
| t3ID | Item | Item_ID | /* t3ID = Code*/
| 111 | Laser | ABC111 | /* Item_ID = Barcode */
| 222 | Phones | ABC222 |
| 333 | Tables | ABC333 |
(Many more)
I get this... I need this...
-------------Lookup_Table------------- -------------Lookup_Table----------
| lookID | t1ID | t2ID | t3ID | | lookID | t1ID | t2ID | t3ID |
| 1 | 1 | 1 | 111 | | 1 | 1 | 3 | 333 |
| 2 | 2 | 2 | 222 | | 2 | 2 | 2 | 222 |
| 3 | 3 | 3 | 333 | | 3 | 3 | 1 | 111 |
Эта таблица связана внешними ключами, и эти значения были добавлены здесь вручную, поскольку исходные таблицы были получены из файлов CSV.
My проблема в производительности или, возможно, я делаю это неправильно на mysql. Когда я запрашиваю по идентификатору таблицы, он работает отлично, но значения не будут совпадать, так как впоследствии я добавил tableID, в некоторых полях есть повторяющиеся значения, и все значения в таблицах являются случайными, и они связаны только этими спецификациями c значения, показанные выше.
Когда я запрашиваю select или любой другой, например "on table1.Purchase = table2.Buyer"
или "where"
, чтобы выполнить сравнение и правильно добавить их в таблицу, сервер localhost аварийно завершает работу. Он теряет связь с mysql сервером. Кроме того, если он напрямую сравнивается между таблицами, он работает, но для этого сравнения требуется более 5 минут.
Если я ограничиваю строки в диапазоне от 0 до 10000, это хорошо, выше этого уровня или если я не ограничиваю его просто вылетает. Я не могу ограничить, так как сейчас у меня более 20000 строк.
Например,
update Lookup_Table lk inner join table1 t1 on t1.t1ID = lk.t1ID
inner join table2 t2 on t2.Buyer = t1.Purchase
set lk.t2ID = t2.t2ID;
То же самое между другими таблицами. Любая идея, если я делаю это неправильно или есть другой способ сделать это? Я пробовал так много разных вещей и не повезло.