|
Вопрос по оптимизации запроса к БД.
|
|||
---|---|---|---|
#18+
Доброе время суток! Испоользую в web-проекте связку vue-laravel-mysql. На стороне БД MySql есть довольно тяжелый запрос с подзапросом, отдающий json. Сам по себе Json не большой. Но на стороне сервера MySql выполняется запрос , перебирающий около 150 раз таблицу с кучей полей, в которой около 35 000 строк. Сам запрос выглядит так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
. В поле metros лежит json-массив, в котором в подзапросе ищем совпадения. Результат вывода Explain такой см. приложенный скрин. Такой запрос отрабатывает по 15-20 секунд, что для сайта просто невыносимо. Что тут можно оптимизировать? Возможно стоит посмотреть настройки самого сервере MySql? На какие параметры стоит обратить внимаение в настройках сервера? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2021, 15:35 |
|
Вопрос по оптимизации запроса к БД.
|
|||
---|---|---|---|
#18+
Михаил Кри, Сколько записей в таблице events подпадает под условие `start_day` BETWEEN '2021-03-01 00:00:00' and '2021-03-31 00:00:00' and `events`.`deleted_at` is null ? Зачем в этом выражении время? В целом малокровных вариантов оптимизации я не вижу. Немалокровные варианты: 1) Изменить структуру хранения. Избавиться от json в пользу обычных полей или дублировать значения из json в обычных полях. 2) Добавить кэширующие таблицы и пересчитывать их, например, раз в сутки во время наименьшей загрузки. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2021, 16:46 |
|
Вопрос по оптимизации запроса к БД.
|
|||
---|---|---|---|
#18+
Лара чуть не из коробки работает с Рэдисом это решит вашу проблему за час. А так, почему вы так храните данные вам виднее. подумайте, может это можно хранить в таблицах с полями и оптимизировать их когда нужно. 35к - это маленькая таблица , что будет с 1000к строк. miksoft> Думаю, что он спешил и не поставил 23:59:59. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2021, 18:41 |
|
Вопрос по оптимизации запроса к БД.
|
|||
---|---|---|---|
#18+
`events`.`metros` - это массив? тип данных числовой? постройте Multi-Valued Index. И `poi`.`id` в JSON-массив преобразовывать вовсе необязательно... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2021, 19:26 |
|
|
start [/forum/topic.php?fid=47&fpage=10&tid=1828135]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 133ms |
0 / 0 |