#mysql #arrays #json #audio
#mysql #массивы #json #Аудио
Вопрос:
Я сохранил аудио-сегменты в виде массивов в кодировке base-64 в формате JSON в базе данных MySQL, и теперь для загрузки их в память я хочу разделить их на batch_size — для этого мне нужно вычислить JSON_LENGTH для всех аудио (400) в памяти во время выполнения. Исходный звук преобразуется из байтов в строки в кодировке base-64 с помощью другого сервиса, который в данный момент нельзя изменить, чтобы также сохранить его размер при вставке в БД.
Моя проблема в том, что когда я запускаю:
SELECT JSON_LENGTH(row) FROM TABLE;
это занимает очень много времени, и это сильно влияет на нашу производительность. Существует ли альтернативный способ вычисления длины типа данных JSON_ARRAY в MySQL в режиме реального времени?
Комментарии:
1. Вы можете добавить сохраненный сгенерированный столбец в структуру таблицы с помощью этого выражения и использовать это предварительно вычисленное значение. Он будет пересчитываться автоматически каждый раз при изменении данных и может быть даже проиндексирован. Конечно, вставка / обновление становятся немного медленнее. См. раздел СОЗДАНИЕ ТАБЛИЦЫ и сгенерированных столбцов , ИЗМЕНЕНИЕ ТАБЛИЦЫ и сгенерированных столбцов .
2. Да, я уже упоминал, что на данный момент я никак не могу изменить текущую структуру таблицы — так что действительно нужен способ быстро вычислить это во время выполнения.
3. Я уже упоминал, что я никак не могу изменить текущую структуру таблицы на данный момент , эта таблица уже существует статически? Или этот «другой сервис» воссоздает эту таблицу каждый раз, когда сохраняет данные? Если сначала добавить столбец, это вряд ли помешает действиям этой службы… Можете ли вы протестировать?