Страница 1 из 1

Кратность длины строки

Добавлено: 12 авг 2008, 14:53
Фанис
Привет!
Я тут по старинке :-) назначаю длину строки кратной 16. На днях что-то подвигло на мысль - а на хрена все это, но сомнения гложут. А самое главное - не могу вспомнить, почему я это делал до сих пор. Толи ассемблерное, толи ... когда писал машинными кодами. Да-а-а, давно это было :-).
Вопрос - кто как подходит к определению длины строки.

Добавлено: 12 авг 2008, 15:27
WildSery
Имеешь в виду в БД?
Я обычно просто с потолка беру.
VARCHAR(1000) просто потому что число нравится.
Или 254 если экспорт в DBF будет производиться, а размер устраивает. Если не устраивает, то конечно, опять же 1000 :lol:
Иногда 32000, если там что-то агрегатное собирается.

Добавлено: 12 авг 2008, 17:08
CyberMax
Имхо, надо исходить из бизнес-правил. Если положено, чтобы фамилия была не более 34 символов, то и ставить надо varchar(34). Вообще у меня стандартые длины - 10, 25, 50, 100, 200 и т.д. символов.

Добавлено: 12 авг 2008, 19:30
Tonal
Интересно, а часто ли бизнес правила накладывают ограничения на длину строк?
Ну понятно какой-нибудь ИНН, БИК или другой индекс.
А какое может быть бизнес ограничение на длину фамилии?

Добавлено: 13 авг 2008, 13:53
Фанис
Вспомнил - кратность применялась для эффективной адресации и выборки данных в памяти. Вроде для record и длина 512 байт считалось оптимальной.

Добавлено: 14 авг 2008, 13:13
Gera
Насколько я понимаю Varchar(n) на диске может занимать от 5 до n+5 байт, в зависимости от хранящихся там данных так что длину следует делать или исходя из бизнес-логики или "с потолка" (с)

Добавлено: 14 авг 2008, 13:52
WildSery
Цифра 5 откуда вдруг взялась?
А вообще, на диске строки сжимаются ("архивируются" по-юзерски).

Добавлено: 14 авг 2008, 17:13
Gera
Я точно не уверен в обьеме, но есть же некоторый заголовок в несколько байт (длинна, сжатие, флаг Null). Вам разработчикам виднее.

Добавлено: 14 авг 2008, 17:59
dimitr
заголовок есть у записи, а не у поля. NULL-флаги для всех полей лежат именно там, по биту на поле. Сжимается запись также целиком. Длина у VARCHAR-а есть, конечно, но т.к. она тоже сжимается в составе записи, то точные накладные расходы на строку предсказать в общем случае невозможно.