|
|
|
Вопрос по оптимизации запроса к БД.
|
|||
|---|---|---|---|
|
#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&msg=40056369&tid=1828135]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
71ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 407ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...