#c# #sql-server #uniqueidentifier
#c# #sql-сервер #уникальный идентификатор
Вопрос:
Я хочу знать, каковы характеристики a UniqueIdentifier column
в Db
Над столбцом nvarchar(32), который содержит строку being sent from c#
Guid.
Комментарии:
1. @marc_s , я хотел nvarchar, так как подумал: «Мне не нужны все эти 32 символа, я думаю, что 8 символов guid достаточно, чтобы быть уникальными …» — поэтому я вырезал 8 символов из 32 символов guid. , Но, вероятно, оно не будет таким уникальным…
2. Идентификатор guid (uniqueidentifier) не сохраняется в виде текста; вы просто видите это в своих инструментах (так же, как даты не являются текстом)
3. Вам действительно нужно учитывать соображения о производительности типов данных Мишель Уффорд — она четко объясняет, ПОЧЕМУ крайне важно выбрать правильный (наиболее подходящий) тип данных для ваших столбцов данных
4. Каждый отдельный байт GUID представлен двумя шестнадцатеричными символами (0-9, A-F); один байт может варьироваться от 0 до 255 — эти значения представлены в строковой форме, например
00
, черезFF
—> для представления одного (двоичного) байта необходимы два символа5. @marc_s Как всегда, спасибо за вашу помощь и внимание.
Ответ №1:
С точки зрения сервера:
- Я бы ожидал
Guid
, что поле будет храниться более эффективно — ему нужно всего 8 байт, а не 32 или, возможно, 64 , в зависимости от того, как именно хранится nvarchar - Сервер может обрабатывать его как непрозрачные двоичные данные — например, при проведении сравнений не требуется никаких интеллектуальных данных. Нет чувствительности к культуре или регистру. Это принципиально не текстовые данные, поэтому не имеет всех проблем и сложностей, связанных с текстом.
- Сервер может решить использовать известную структуру Guid для более эффективного индексирования. Например, если некоторые биты с большей вероятностью будут распределены случайным образом, чем другие, их можно использовать для индексации.
С точки зрения программиста:
- Это дает более четкое представление об ожидаемых данных.
- Вам не нужна никакая проверка, и у вас никогда не будет никаких проблем с недопустимыми данными — это просто идентификаторы GUID.
Я большой поклонник хранения данных в любой форме, наиболее близкой к логическому значению данных. Например, если вы собираетесь хранить данные даты и времени, Это значительно упрощает процесс сравнения и т. Д., Если у вас есть значение даты / времени, а не строка. Преобразования в строку и из строки (или любого другого представления, но обычно это строка) должны выполняться только там, где это необходимо.