Подтвердить что ты не робот

Должен ли я использовать blob или текст для JSON в MySQL?

Я планирую сохранить строку json_encoded в моей базе данных. Я не могу точно сказать, как долго это будет, но я уверен, что это будет долго. Моя проблема в том, какой тип поля я буду использовать для этого, это blob или text?

Я предпочитаю тот, где я могу максимально экономить место при быстром поиске, в любом случае у меня есть другой столбец, где я должен просто индексировать.

4b9b3361

Ответ 1

blob обычно используется для таких вещей, как изображения, двоичные файлы и т.д. text должен быть достаточно хорош для вашего случая, или вы можете использовать longtext, который имеет еще большую емкость пространства, если это действительно проблема.

С точки зрения поиска, поскольку вы храните файлы json_encode 'd, вам все равно нужно называть его json_decode, чтобы он был полезен в вашем приложении, я не думаю, что выбор типа данных имеет значение в этот случай.

Лучше всего нормализовать дизайн базы данных вместо хранения связанных файлов в одной большой строке json.

Ответ 2

Как указано в документации MySQL, поскольку 5.7.8 поддерживается собственный тип данных JSON.

Тип данных JSON обеспечивает эти преимущества перед хранением строк в формате JSON в столбце строки:

  • Автоматическая проверка документов JSON, хранящихся в столбцах JSON. Неверные документы вызывают ошибку.
  • Оптимизированный формат хранения. Документы JSON, хранящиеся в столбцах JSON, преобразуются во внутренний формат, который позволяет быстро читать доступ к элементам документа. Когда сервер позже должен прочитать значение JSON, хранящееся в этом двоичном формате, значение не должно анализироваться из текстового представления. Бинарный формат структурирован так, чтобы сервер мог искать подобъекты или вложенные значения непосредственно с помощью индекса ключа или массива без чтения всех значений до или после них в документе.

Итак, как указано в документации по MySQL, следует использовать тип данных JSON, а не текст.