Текущий архив: 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.46 MB
Время: 0.008 c