Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
3-6418
Lancelot
2003-03-16 23:48
2003.04.03
Связанные таблицы, запросы по запросам...


3-6336
Gregory
2003-03-14 00:39
2003.04.03
Компонент работы с БД DegysiDB


14-6765
xtreme
2003-03-14 10:16
2003.04.03
Запись на CD/DVD (R, RW, +RW, -RW) где стандарты почитать?


7-6814
serg_1
2003-02-05 14:18
2003.04.03
Общие ресурсы для нескольких потоков.


1-6431
SZap
2003-03-23 15:55
2003.04.03
Перехват нажатий клавиши дополнительной клавиатуры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский