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

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

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

2 ответов


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

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

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


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

тип данных JSON предоставляет следующие преимущества перед хранением строк формата JSON в столбце string:

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

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