Хранение шестнадцатеричных значений - PullRequest
2 голосов
/ 08 апреля 2019

Я бы хотел эффективно хранить это значение в MSSQL 2016:

6d017ed2a48846f0ac025dd8603902c7

, то есть с фиксированной длиной в диапазоне от 0 до f, шестнадцатеричное, верно ?.Char (32) кажется слишком дорогим.

Любая помощь будет признательна.Спасибо!

1 Ответ

2 голосов
/ 08 апреля 2019

Почти во всех случаях вы не должны хранить это как строку вообще. SQL Server имеет binary и varbinary типы .

Эта строка представляет 16-байтовое двоичное значение. Если ожидаемый размер является фиксированным, его можно сохранить как binary(16). Если размер изменяется, его можно сохранить как varbinary(N), где N - максимальный ожидаемый размер.

Не используйте varbinary(max), это предназначено для хранения больших двоичных объектов и имеет специальные характеристики хранения и индексации.

Сохранение самой строки имеет смысл в нескольких случаях, например, если это хеш-строка, используемая в API, или она предназначена для показа людям. В этом случае данные всегда будут представлены в виде строки и всегда должны быть преобразованы в строку, которая будет использоваться. В этом случае постоянные преобразования, вероятно, будут стоить дороже, чем преимущества хранения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...