Показать сообщение отдельно
Старый 01.03.2016, 19:55   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,971 / 3267 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от b_nosoff Посмотреть сообщение
Автор говорит, что 160 бит конвертируются в строку nvarchar(40), длиной 80 байт, т.е. 640 бит, т.е. в ЧЕТЫРЕ раза больше (два символа на байт при конвертации в строковое hex представление, и два байта на символ при хранении в БД). Расточительно, не находите?
Возможно проще было бы 20 байт хеш значения порезать на 16 и 4 байта. И один кусок кодировать как guid поле SHA1HashGuid, а другой как int32 поле SHA1HashInt32. Все равно индекс составной (SHA1HashHex, dataareaid, partitionid) так что где 3 поля там и 4, зато по объему выиграем сильно.

Вариант 1
SHA1HashHex, dataareaid, partitionid это 80 + 8 + 8 = 96 байт

Вариант 2
SHA1HashIntGuid, SHA1HashInt32, dataareaid, partitionid это 16 + 4 + 8 + 8 = 36 байт

Выигрыш по объему - 62 %
Больше чем в 2,5 раза.
За это сообщение автора поблагодарили: mazzy (2).