Чрезвычайно медленный SQL запрос с большим количеством соединений - PullRequest
0 голосов
/ 30 марта 2020

У меня есть база данных MariaDB, в которой есть 1 основная таблица, в которую помещается информация о клиенте. Затем у меня есть 28 других таблиц, которые имеют пункты меню для основной таблицы на стороне веб-формы. В каждой из таблиц меню может быть 2-4 пункта. Каждый имеет 2 столбца, идентификатор и значение. id индексируется в каждой таблице.

Я делаю SELECT customers.customer_name, menu_1.value AS customer_status,.... с кучей подобных вещей. Тогда у меня есть 28 или около того JOINs. Я знаю, что это вообще не оптимизировано.

INNER JOIN menu_table_1 ON customers.status = menu_table_1.id

В этом примере menu_table_1.id - это int, как и customer.status. Это займет вечно бежать. У меня только 4 элемента в таблице клиентов на данный момент.

Я также заметил, что во время выполнения запроса максимальная загрузка ЦП. У меня еще не было запроса fini sh .... Но если я его урежу, он будет работать нормально.

1 Ответ

0 голосов
/ 30 марта 2020

Запустите запрос, добавляя по 1 объединению за раз, чтобы найти, что такое соединения bottle necks, затем создайте индекс для тех полей, к которым вы присоединяетесь, повторите запрос, чтобы увидеть, решена ли проблема. Продолжайте и присоединитесь к следующей таблице et c ...

...