Varchar (255) v tinyblob v tinytext

У меня вопрос, есть ли разница между tinyblob и tinytext?

Купите мой реальный вопрос, какая причина, если таковая имеется, я бы выбрал varchar (255) по tinyblob или tinytext?

Ответ 1

В первую очередь требования к хранилищу и обработка/скорость памяти:

В следующей таблице M представляет объявленную длину столбца в символах для недвоичных типов строк и байтов для двоичных типов строк. L представляет фактическую длину в байтах заданного строкового значения.

VARCHAR (M), VARBINARY (M):
L + 1 байты, если значения столбца требуют 0 - 255 байт,
L + 2 байта, если значения могут требуется более 255 байт

TINYBLOB, TINYTEXT:
L + 1 байт, где L < 2 8

Кроме того, см. this post:

Для каждой используемой таблицы MySQL выделяет память для 4 строк. Для каждого из этих строки CHAR (X)/VARCHAR (X) вверх по символам X.

A TEXT/BLOB, с другой стороны, представленный 8-байтовым указателем + a 1-4 байта (в зависимости от BLOB/TEXT). BLOB/TEXT - это динамически распределяется по использованию. Это будет используйте меньше памяти, но в некоторых случаях это может фрагментировать вашу память в длинных работать.

Изменить. В качестве отложенного блобинга хранят двоичные данные и текстовые магазины ASCII, это единственная разница между TINYBLOB и TINYTEXT.

Ответ 2

VARCHAR (255) больше SQL-стандарта, чем tinyblob или tinytext. Таким образом, ваш script и приложение будут более переносимыми между поставщиками баз данных.

Ответ 3

Вы не можете применить CHARACTER SET к TINYTEXT, но вы можете использовать VARCHAR (255)