Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.03;
Скачать: CL | DM;

Вниз

Увеличение размера базы в зависимости от заполнености полей   Найти похожие ветки 

 
Vick ©   (2003-03-13 18:34) [0]

Доброго вечера всем!
Возник такого рода вопрос: необходимо создать универсальную таблицу в базе MSSQL для хранения разного типа документов, соответсвенно все документы имеют какую-то постоянную чатсть типа: тип, № док-та, дата док-та, кол-во, а дальше немного отличаются: у одного есть поле сумма, у другого его нету, а есть поле размер. Так вот вопрос заключается в том, что будет ли увеличиваться размер базы, если эти поля не будут заполняться для каждого документа соответсвенно? Потому что я знаю, что в dbf-файлах размер зависит только от количества записей, а от щаполнености или незаполнености полей абсолютно не зависит...
Заранее спасибо за ответ.


 
Anatoly Podgoretsky ©   (2003-03-13 18:39) [1]

Уведичиваться будет обязательно, поскольку как минимум нужно хранить информацию, что это поле не заполнено, как устроено внутри это сложный вопрос. Может где у микрософта и описано.


 
sniknik ©   (2003-03-13 18:42) [2]

от типа поля зависит к примеру поле Char(50) статично и размер будет расти с каждой записью неважно есть чтонибудь в нем или нет, поле VarChar(50) лишено такого недостатка и занимает (пустое) 4 байта, а заполненое только тот размер что наполнен + 4 байта.
(кстати доступ к VarChar медленнее)

смотри какого типа твои поля.


 
Vick ©   (2003-03-13 19:03) [3]

> sniknik ©

В том то и дело, что поле тектовое и размер у него 100, оно есть только в одном документе, а во всех остальных его нету. Может стоит сделать отдельно таблицу с размерами, а в основной использовать на нее ссылку?


 
ЮЮ ©   (2003-03-14 03:33) [4]

>Может стоит сделать отдельно таблицу с размерами, а в основной использовать на нее ссылку?

Стоит. Только не в основной делать ссылку, а в дополнительной ключевому полю присваивать то же значение, что и в ключе главной. Это называется связью Master-Detail с отношением 1 к 0..1


 
sniknik ©   (2003-03-14 08:38) [5]

> поле тектовое и размер у него 100.
непонял поле типа Text? тогда оно будет занимать именно тот размер что у него есть (записан), а пустое 24 байта (если не ошибаюсь, но гдето в этом районе точно). Разбить на 2 тоже можно, и не только ради места в базе, часто так удобнее.

да еще почитай установку в Bol - SET SET ANSI_PADDING ON/OFF (по умолчанию ON) если отключить то разници между CHAR и VARCHAR не будет, все поля с переменной длинной начинают вести себя как с фиксированной. Действует по моему только при создании таблиц.


 
Anatoly Podgoretsky ©   (2003-03-14 09:57) [6]

ЮЮ © (14.03.03 03:33)
Именно в допольнительной, иначе смысла нет, поскольку может быть и проигрыш


 
Vick ©   (2003-03-14 13:01) [7]

> sniknik ©
В установке ANSI_PADDING ON/OFF есть один недостаток, его нельзя выключать, если нужно в этой таблице создавать индексы и работать с ними.
Буду использовать varchar, пусть работает немного дольше, а дополнительную таблицу как оказалось делать тоже нельзя, т.к. в это поле может быть занесено чего угодно.

Спасибо всем за советы



Страницы: 1 вся ветка

Текущий архив: 2003.04.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
1-6437
Alex-21
2003-03-14 20:14
2003.04.03
Активность окна


1-6601
pet
2003-03-22 20:15
2003.04.03
проблема с созданием


14-6660
alex134
2003-03-15 15:38
2003.04.03
Адрес


14-6781
Юрий Зотов
2002-12-01 21:49
2003.04.03
Начинающим программистам. Этап 3.


1-6435
modem
2003-03-22 14:55
2003.04.03
Удаление папки