11 авг. 2013 г.

Вот почему у нас куча односимвольных типов объявлена как VARCHAR вместо CHAR? Ладно бы еще всякие там activity флажки в плане счетов, но признак дебет/кредит для записи проводки это никуда не годится. Десять миллионов проводок, двадцать миллионов записей в AC_ENTRY == сорок миллионов байт на хранение длины поля, которая всегда равна 1. Может в этом и был когда-то какой-то смысл, но я решительно ничего не могу вспомнить.

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

4 комментария:

igor6003 комментирует...

Можно также использовать smallint или integer. По объему занимаемого места они одинаковы с char(1), но выборки работают быстрее:
http://www.ibase.ru/devinfo/test1.htm

Andrei комментирует...

Да, но и ошибиться в последствии значительно проще. C и D -- понятнее для обозначения кредитовой и дебитовой части счета, чем 0 и 1.

igor6003 комментирует...

Кстати, по поводу чистки ненужных данных.
А можно добавить в редакторе скрипт-объектов на вкладке “История” возможность удаления выделенных ревизий? Порой этих ревизий много и создаются они даже при несущественных изменениях (например, вставили пустую строку). А хранится это всё в блобах со всеми вытекающими…

Andrei комментирует...

Можно подумать, но это все семечки. В реальных базах макросы со всей историей занимают не более 0.1% от общего размера БД.

Отправить комментарий