У меня есть много сообщений, и я нахожу много разных ответов.
Запустив MYSQL 5.7, у меня есть большой объект JSON, который не нуждается в запросе, просто хранящем. Использование JSON
кажется неэффективным – мне не нужно его проверять. Какое лучшее решение в этом случае? BLOB
или TEXT
– очевидный выбор, но какой из них лучший выбор?
Двоичные файлы нужно преобразовать обратно в текст (как вам это лучше всего делать? PHP или во время SQL-запроса?) Текст wilst должен быть возвращен. Я бы очень признателен за любые разъяснения …
Что говорится в руководстве по типу JSON?
Оптимизированный формат хранения. Документы JSON, хранящиеся в столбцах JSON, преобразуются во внутренний формат, который позволяет быстро читать доступ к элементам документа. Когда сервер позже должен прочитать значение JSON, хранящееся в этом двоичном формате, значение не должно анализироваться из текстового представления. Бинарный формат структурирован так, чтобы сервер мог искать подобъекты или вложенные значения непосредственно по индексу ключа или массива без чтения всех значений до или после них в документе.
Акцент мой. Вы, очевидно, сохраняете этот объект JSON, потому что собираетесь его читать в другое время. Если вы прочитали его в каждом запросе, сохранение его в виде BLOB или TEXT могло бы стать тем, в котором вы его извлекаете из базы данных, это на несколько микросекунд быстрее, но вы потратите это и больше конвертируете объект TEXT в документ JSON.
Также давайте не будем забывать, что поле JSON удаляет все нежелательные пробелы и т. Д., Поэтому оно будет более компактным, чем TEXT и BLOB, что, возможно, приведет к отрицательному снижению скорости поиска, которую эти два типа будут давать.
Также использование JSON делает вашу систему надежной в будущем. Когда-нибудь вам может понадобиться найти конкретный элемент в вашем поле JSON в качестве одной из вещей, но у вас есть 3,5 миллиона записей в поле BLOB, что тогда?