varchar or text

  • Автор темы Автор темы serega86
  • Дата начала Дата начала

serega86

Новичок
varchar or text

Подскажите какой тип лучше использовать для поля в которое будет вставляться от 0 д 200 символов ?

1) varchar(200)
или
2) text
 
fixxxer
Вы не поверите, но предел поля типа varchar уже давно не 255 символов.
 
camka
Не все ж 5 юзают...
 
при использовании text потеря 1 байт на каждый ряд (для хранения длины) по сравнению с varchar
 
на 5ке много что по другому, но это еще неактуально пока :)
 
Автор оригинала: andymc
при использовании text потеря 1 байт на каждый ряд (для хранения длины) по сравнению с varchar
ну это понятно ...

как я понял обявляя varchar(200) - будет выделено 200байт для строчки любой длинны, а объявляя как text будет выделено столько байт сколько требуеться в каждомконкретном случае + 1
так ?
 
а при большом количестве одновременных запросов к бд иногда лучше использовать char, будет избыточность, но производительность возрастёт.
 
serega86
Ненмого не так.
- varchar занимает M + 1 байт
- text - M + 2 байта
, где М - длина строки (именно фактическая длина, а не максимум)
В фразе varchar(200) - 200 - максимум.
 
Я думаю, что 1-2-3-8 лишних байтов, при хранении сотен символов - это копейки. longtext наше все.

А то как hash пароля при апгрейде алгоритма crypt вдруг не влезет в предусмотренный для него 3 года назад varchar(n), вот это будет весело.
 
fixxxer
Может тогда лучше спросить у товарища serega86, какую версию он использует, нежели обучать устаревающим технологиям?
 
andymc
Если в таблице 40000 рядов, то сама таблица может быть 40 Мб - и плевать на 40 кб.
 
AmdY, вырастет производительность или нет зависит от типа таблицы. Для MyISAM CHAR может быть быстрее, InnoDB одинаково обрабатывает как CHAR так и VARCHAR, но из-за того что данные в VARCHAR могут быть меньше, чем объявлен столбец VARCHAR может быть быстрее для InnoDB.
 
Сверху