Мой побочный вопрос, есть ли какая-нибудь разница между tinyblob и tinytext?
Куплю мой настоящий вопрос: по какой причине, если таковая имеется, я бы выбрал varchar (255) вместо tinyblob или tinytext?
В основном требования к хранилищу и обработка / скорость памяти:
В следующей таблице M представляет объявленную длину столбца в символах для недвоичных типов строк и байтов для двоичных типов строк. L представляет фактическую длину в байтах данного строкового значения. VARCHAR (M), VARBINARY (M): L + 1 байты, если значения столбца требуют 0 - 255 байт, L + 2 байта, если значения могут требуется более 255 байт TINYBLOB, TINYTEXT: L + 1 байт, где L <2 <sup>8
В следующей таблице M представляет объявленную длину столбца в символах для недвоичных типов строк и байтов для двоичных типов строк. L представляет фактическую длину в байтах данного строкового значения.
M
L
VARCHAR (M), VARBINARY (M): L + 1 байты, если значения столбца требуют 0 - 255 байт, L + 2 байта, если значения могут требуется более 255 байт
TINYBLOB, TINYTEXT: L + 1 байт, где L <2 <sup>8
Дополнительно смотрите это сообщение:
Для каждой используемой таблицы MySQL выделяет память на 4 строки. Для каждого из этих строки CHAR (X) / VARCHAR (X) занимает столбец до символов X. Текст / BLOB с другой стороны представленный 8-байтовым указателем + Длина 1-4 байта (в зависимости от Тип BLOB / TEXT). BLOB / ТЕКСТ выделяется динамически при использовании. Это будет использовать меньше памяти, но в некоторых случаях это может фрагментировать вашу память в долгосрочной перспективе бежать.
Для каждой используемой таблицы MySQL выделяет память на 4 строки. Для каждого из этих строки CHAR (X) / VARCHAR (X) занимает столбец до символов X.
Текст / BLOB с другой стороны представленный 8-байтовым указателем + Длина 1-4 байта (в зависимости от Тип BLOB / TEXT). BLOB / ТЕКСТ выделяется динамически при использовании. Это будет использовать меньше памяти, но в некоторых случаях это может фрагментировать вашу память в долгосрочной перспективе бежать.
Редактировать : Кроме того, BLOB-объекты хранят двоичные данные и текстовые хранилища ASCII, в этом единственная разница между TINYBLOB и TINYTEXT.
VARCHAR (255) является более стандартным SQL, чем tinyblob или tinytext. Таким образом, ваш сценарий и приложение будут более переносимыми среди поставщиков баз данных.
Вы не можете применить CHARACTER SET к TINYTEXT, но вы можете применить к VARCHAR (255)