11 авг. 2013 г.
Вот почему у нас куча односимвольных типов объявлена как VARCHAR вместо CHAR? Ладно бы еще всякие там activity флажки в плане счетов, но признак дебет/кредит для записи проводки это никуда не годится. Десять миллионов проводок, двадцать миллионов записей в AC_ENTRY == сорок миллионов байт на хранение длины поля, которая всегда равна 1. Может в этом и был когда-то какой-то смысл, но я решительно ничего не могу вспомнить.
Пока поменяем в скриптах генерации эталона. Если ничего не вылезет можно будет апдейт сделать и для существующих баз.
Labels:
база данных,
оптимизация
4 комментария:
Можно также использовать smallint или integer. По объему занимаемого места они одинаковы с char(1), но выборки работают быстрее:
http://www.ibase.ru/devinfo/test1.htm
Да, но и ошибиться в последствии значительно проще. C и D -- понятнее для обозначения кредитовой и дебитовой части счета, чем 0 и 1.
Кстати, по поводу чистки ненужных данных.
А можно добавить в редакторе скрипт-объектов на вкладке “История” возможность удаления выделенных ревизий? Порой этих ревизий много и создаются они даже при несущественных изменениях (например, вставили пустую строку). А хранится это всё в блобах со всеми вытекающими…
Можно подумать, но это все семечки. В реальных базах макросы со всей историей занимают не более 0.1% от общего размера БД.
Отправить комментарий