Mysql с использованием CHAR или BLOB для хранения строки UTF-8 с известным ограничением размера в байтах - PullRequest
0 голосов
/ 06 октября 2018

У меня есть строки UTF-8, которые я хочу сохранить в столбце Mysql / MariaDB.Я не могу использовать VARCHAR из-за ограничения на количество символов в столбце.Я далеко за этим пределом.

Я знаю максимальное количество байтов, которое содержит наибольшую строку UTF-8, которая у меня есть.При чтении документов, отображаемых с помощью CHAR или TEXT, будет выделено 3 байта (или 4 для UTF8MB4) на символ.Поскольку я знаю реальный размер, он будет работать, если я сохраню строку в BLOB?Будет ли это работать вообще?Есть ли какие-либо известные проблемы с этим подходом?

Я использую MariaDB с InnoDB и UTF8MB4.

1 Ответ

0 голосов
/ 07 октября 2018

MEDIUMTEXT может обрабатывать 16 миллионов байтов (не менее 4 миллионов символов utf8mb4 _).Будет ли этого достаточно?

MEDIUMBLOB также может обрабатывать 16 миллионов байт.

Использовать варианты для CHAR и TEXT для символов .Это дает вам проверку кодирования, сравнения, сортировки и т. Д. Используйте варианты BINARY и BLOB для байтов, которыми вам не нужно манипулировать, например, для изображений.

Рассмотрите возможность использования FULLTEXT индекс для эффективного поиска определенных слов в столбце TEXT.LIKE, MID() и т. Д. Также работают с большими TEXT столбцами, но не обязательно эффективно.

Ваш вопрос неточен в том, что вы пытаетесь сделать.Если я не дал вам достаточно подсказок, уточните ваши данные и требования к запросам.

...