Mysql таблица поиска (Mysql проблема производительности) - PullRequest
0 голосов
/ 27 апреля 2020

Я сделал таблицу поиска для всех моих таблиц. То, что я пытаюсь сделать, это то, что он должен делать, соответствовать идентификаторам сопоставленным значениям.

Я использую 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;

То же самое между другими таблицами. Любая идея, если я делаю это неправильно или есть другой способ сделать это? Я пробовал так много разных вещей и не повезло.

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