Mariadb
innodb
поле будет выбираться как при получении конкретной записи (например, where id = ...)
так и при получении нескольких записей (например, where created_at > ...)
индексы для этого поля не нужны.
Самые частые операции - select.
Что выбрать?
varchar быстрее чем text
varchar ограничивает максимальное кол-во записываемых данных. varchar(5000) не запишет более 5000 символов, обрезав лишнее.
максимум 65к символов. правда, насколько я помню этот максимум включает в себя общее количество данных в строке.
Если влезаем в ограничение - я бы взял varchar
Не раз всплывала проблема с фиксированной строкой, если учесть что хотите 5000 символов, то явно заводите под какие то логи. Если нужно ограничить например под описание товара, то нужно решить с длинной сразу. Если будут сериализованные данные, то выбираем text, иначе можно столкнуться ч проблемой, что нужные данные нн записались
vism, странный Вы. Здесь подробно описано какой тип данных и когда стоит использовать. BLOB это тот же text. При использовании text и поиске в таблице не через индексы будет существенный прирост скорости поиска (естественно не в самих полях text).
У текста фиксированная длина в 65к чаров - он будет избыточен.
Если известна точная или максимальная длина строки, то я бы выставил все варчары, затем завёл бы таблицу рандомом гиг на 300, выполнил ALTER TABLE tblname ROW_FORMAT=FIXED и замерил бы производительность. Поиски и выборки на строках фиксированной длины могут иметь прирост до 20% по скорости.
Если длина поля > 255, но < ~10000 символов
Можно использовать как CHAR или VARCHAR, так и BLOB. Индексирование по полями такой длины невозможно, к тому же есть шанс что однажды записываемые данные превысят 10000 символов, и может быть BLOB подойдет больше. Ориентируйтесь только на удобство работы с такими данными в приложении.