Это старый вопрос, но я все еще могу видеть его в верхней части результатов поиска Google, поэтому я думаю, было бы целесообразно добавить новый ответ через 4 года после того, как вопрос будет задан.
Прежде всего, улучшена поддержка хранения JSON в СУБД. Вы можете подумать о переходе на PostgreSQL (хотя MySQL поддерживает JSON с версии v5.7.7). PostgreSQL использует очень похожие команды SQL, как и MySQL, за исключением того, что они поддерживают больше функций. Одна из добавленных функций заключается в том, что они предоставляют тип данных JSON, и теперь вы можете запрашивать сохраненный JSON. ( Некоторая ссылка на это ) Если вы не составляете запрос непосредственно в своей программе, например, используя PDO в php или красноречиво в Laravel, все, что вам нужно сделать, это просто установить PostgreSQL на свой сервер и изменить настройки подключения к базе данных. Вам даже не нужно менять свой код.
В большинстве случаев, как предполагали другие ответы, хранение данных в виде JSON непосредственно в СУБД не является хорошей идеей. Однако есть некоторые исключения. Одна ситуация, о которой я могу думать, - это поле с переменным количеством связанных записей.
Например, для хранения тега сообщения в блоге обычно требуется таблица для сообщения в блоге, таблица тегов и таблица соответствия. Итак, когда пользователь хочет отредактировать сообщение, и вам нужно отобразить, какой тег связан с этим сообщением, вам нужно будет запросить 3 таблицы. Это сильно повредит производительности, если ваша таблица соответствия / таблица тегов будет длинной.
Сохраняя теги в виде JSON в таблице сообщений блога, одно и то же действие требует поиска только одной таблицы. После этого пользователь сможет увидеть сообщение в блоге, которое будет редактироваться быстрее, но это снизит производительность, если вы захотите создать отчет о том, какое сообщение связано с тегом, или, возможно, выполнить поиск по тегу.
Вы также можете попробовать денормализовать базу данных. Дублируя данные и сохраняя данные обоими способами, вы можете получить преимущества обоих методов. Вам просто потребуется немного больше времени для хранения ваших данных и больше места для хранения (что дешево по сравнению с затратами на большую вычислительную мощность)