Мы храним некоторые Guid в базе данных MS SQL. Есть некоторый унаследованный код, который выполняет Guid.ToString(), а затем передает их в 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-сервера любые последовательные Guids должны быть сначала сохранены с повторяющимся значением, поэтому он сохраняет их задом наперед.