Я работаю по схеме рефакторинга базы данных (SQL Server 2008) и собираю аргументы для изменения столбцов NCHAR(1)
(которые сохраняют значения Y|N
) до BIT
. Все понимают, что это необходимо и не знают, почему это происходит, но это изменение влияет на производственную базу данных, поэтому требуются веские аргументы. Таблица хранит адресный каталог (до 1 м записей).NCHAR (1) vs BIT
Первый аргумент, который я нашел - каждый nchar fields принимает 2 байта, каждый 8 bit fields - 1 байт (следующий 8 - дополнительный 1 байт).
Что дальше? Возможно, некоторые проблемы производительности индексов?
Удивительно, почему первоначальный дизайнер решил, что юникод должен был хранить только «N» и «Y»!Я подозреваю, что сравнения, скорее всего, будут более быстрыми в полях бит, чем поля «nchar», но не знают об этом. –
Очевидно, что преимущество «NCHAR (1)» заключается в том, что вы можете его расширять - [при необходимости] (http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx) - удерживать * другие * булевы значения. ;-) –
@Dean Harding: LOL. Я когда-то имел [PHB] (http://en.wikipedia.org/wiki/Pointy-haired_Boss), настаивая на том, что мы можем поместить 2 в бит поле, так как это была только одна цифра. –