varchar (255) v крошечный шарик v крошечный текст - PullRequest
13 голосов
/ 27 сентября 2008

Мой побочный вопрос, есть ли какая-нибудь разница между tinyblob и tinytext?

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

Ответы [ 3 ]

16 голосов
/ 27 сентября 2008

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

В следующей таблице 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 / ТЕКСТ выделяется динамически при использовании. Это будет использовать меньше памяти, но в некоторых случаях это может фрагментировать вашу память в долгосрочной перспективе бежать.

Редактировать : Кроме того, BLOB-объекты хранят двоичные данные и текстовые хранилища ASCII, в этом единственная разница между TINYBLOB и TINYTEXT.

5 голосов
/ 27 сентября 2008

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

0 голосов
/ 07 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...