Мы храним некоторые Guid в базе данных MS SQL. Есть некоторый устаревший код, который делает, Guid.ToString()
а затем передает их в a, varchar(64)
и есть более новый код, который передает их с помощью параметра уникального идентификатора. Когда вы смотрите на результаты, используя MS SQL Management studio, они выглядят по-разному. Порядок байтов первых трех блоков меняется на обратный, но последний остается неизменным. Почему?
Поля уникального идентификатора на сервере Sql могут быть проиндексированы, как и «назад».
Направляющие могут быть сгенерированы как из конкретной информации о машине, так и из информации о времени события.
Guid по умолчанию в .Net является случайным, но из него можно получить последовательные Guid с помощью внешнего вызова:
[DllImport( "rpcrt4.dll", SetLastError = true )]
static extern int UuidCreateSequential( out Guid guid );
Это позволит вам получить Guids на основе вашего MAC-адреса ( документы MSDN ), которые являются последовательными.
Если вы используете .ToString()
эти последовательные направляющие, то увидите, что первая часть строки меняется, а остальная часть остается постоянной.
Это ускоряет проверки на равенство между направляющими (так как различия будут в начале) и улучшает вариации для усеченных.
Для поиска в столбцах SqlServer создает индексы аналогично телефонному справочнику или словарю. Поиск слов, начинающихся с «Over *», гораздо быстрее, чем поиск слов, заканчивающихся на «* flow».
Это означает, что для сервера Sql любые последовательные направляющие должны быть сохранены с повторяющимися значениями в первую очередь, поэтому он сохраняет их в начале.