Задать вопрос
@Kumatoz48

Как исправить долгое выполнение запросов на большой таблице?

Есть сервер MySQL 8 версии. В простой БД два поля - id и data. У поля data тип JSON. В нем хранятся данные, получаемые из нескольких форм. Т. е. данные из формы преобразуются в JSON и сохраняются в БД.

Проблема в том, что данных планируется довольно много. При тестировании простейшего запроса

SELECT * FROM table WHERE data = "{'field1':'value', 'field2':'value','field3':'value'.....}"

в случае, когда записей в таблице порядка 10 миллионов время выполнения запроса на локальной машине составляет в районе 30 секунд. Есть ли способы ускорить или посоветуйте варианты, возможно вся логика неправильная и можно сделать более грамотно.
  • Вопрос задан
  • 238 просмотров
Подписаться 1 Простой 4 комментария
Решение пользователя Ипатьев К ответам на вопрос (4)
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
возможно вся логика неправильная и можно сделать более грамотно.


Штирлиц шел по Берлину, и не мог понять, что выдавало в нем русского шпиона - то ли рация за спиной, то ли волочащийся сзади парашют, то ли болтающийся на груди ППШ.

когда записей в таблице порядка 10 миллионов время выполнения запроса


ВНЕЗАПНО оказалось, что если использовать микроскоп для забивания гвоздей, то в него становится почему-то плохо видно.

В простой БД два поля - id и data. У поля data тип JSON. В нем хранятся данные, получаемые из нескольких форм.


Но вы же, когда эту, с позволения сказать, "базу данных" проектировали, ведь радовались своему остроумию и хитрости? Зачем проектировать структуру базы данных, делать какие-то таблицы, между таблицами связи. потом сложные запросы писать? Если можно хопа, и в джейсон все кучей навалить!

Ну вот и продолжайте радоваться дальше.

Сама по себе дурацкая проблема проверки уникальности длинного текста решается элементарно, добавляется колонка с md5 от содержимого, и поиск делается по ней.
Но ведь в таблицу эти данные складываются не только чтобы проверять их на уникальность. И собственно какая-то работа с этими данными все равно превратится в боль
Ответ написан