Запросы, планы, оптимизация запросов, ...
Модераторы: 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
Иногда 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-а есть, конечно, но т.к. она тоже сжимается в составе записи, то точные накладные расходы на строку предсказать в общем случае невозможно.