Задавайте вопросы, мы ответим
Вы не зашли.
Всем привет!
Зачем нужно указывать длину ячейки varchar меньше 255-и символов, если на расход памяти это вроде как не влияет?
Неактивен
??? Что значит "не влияет на расход памяти"? И что за привязка такая к числу 255? В-общем, поясните свою мысль.
Неактивен
deadka, а что тут пояснять-то?)
Разница между ячейками CHAR(10) и VARCHAR(10) в том, что CHAR(10) всегда занимает 10 байт, даже если в ней записана только одна буква. А ячейка VARCHAR(10) будет занимать от 1-го до 11-и байт в зависимости от содержимого.
http://dev.mysql.com/doc/refman/5.6/en/char.html
Так зачем писать VARCHAR(10), если всегда можно писать VARCHAR(255) и не париться?
255 потому что:
1) до версии MySQL 5.0.3 это была максимальная длина
2) если указать больше 255-и, то к длине каждой записи будет прибавляться 2 байта вместо одного
http://dev.mysql.com/doc/refman/5.6/en/ … ments.html
3) если нужно хранить в ячейке большой текст, то для этого есть тип TEXT
Отредактированно Имя занято (12.01.2013 23:27:08)
Неактивен
Неактивен
Т. е. если таблица не MEMORY, то спокойно пишем VARCHAR(255) без долгих раздумий на тему "а сколько же максимально букв будет в породе единорога".
Неактивен
Технически это так, при условии, что индекс будете создавать только префиксный. С точки зрения структуры базы данных в этом решении есть недостатки. 255 - это не бесконечная длина и не подумав какие будут строки, невозможно понять, что они не превысят 255. Так как 255 будет техническим числом, оно не попадет в спецификацию продукта и не будет четко проверяться при вводе. В реальной работе кто-то использует значение больше 255 символов и потеряет часть информации.
Неактивен
Да, логично. Спасибо.
Неактивен