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

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Фанис
Сообщения: 17
Зарегистрирован: 16 июн 2005, 19:28

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

Сообщение Фанис » 12 авг 2008, 14:53

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 12 авг 2008, 15:27

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

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 12 авг 2008, 17:08

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

Tonal
Сообщения: 104
Зарегистрирован: 30 сен 2007, 13:42

Сообщение Tonal » 12 авг 2008, 19:30

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

Фанис
Сообщения: 17
Зарегистрирован: 16 июн 2005, 19:28

Сообщение Фанис » 13 авг 2008, 13:53

Вспомнил - кратность применялась для эффективной адресации и выборки данных в памяти. Вроде для record и длина 512 байт считалось оптимальной.

Gera
Сообщения: 53
Зарегистрирован: 12 мар 2008, 17:34

Сообщение Gera » 14 авг 2008, 13:13

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 14 авг 2008, 13:52

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

Gera
Сообщения: 53
Зарегистрирован: 12 мар 2008, 17:34

Сообщение Gera » 14 авг 2008, 17:13

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

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 14 авг 2008, 17:59

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

Ответить