Порівняння значень guid і uniqueidentifier

Тип даних ідентифікатора GUID в SQL Server представлений типом даних uniqueidentifier. який зберігає 16-байтовое двоичное значення. Ідентифікатор GUID - це двійкове число, головним чином використовується для призначення ідентифікаторів, які повинні бути унікальними в рамках мережі з великим числом комп'ютерів в різних розташуваннях. Ідентифікатори GUID можна створювати шляхом виклику функції Transact-SQL NEWID, вони гарантовано будуть унікальними в будь-якому розташуванні. Додаткові відомості див. У розділі «Використання значень типу uniqueidentifier» електронної документації по SQL Server.

Так як значення GUID є довгими і непрозорими, вони не несуть ніякого смислового навантаження для користувачів. Якщо в якості ключових значень використовуються випадкові значення GUID і вставляється багато рядків, то це породжує збільшення операцій введення-виведення в індексах, що може негативно позначитися на продуктивності. Крім того, значення GUID відносно великі в порівнянні з іншими типами даних. В цілому значення GUID рекомендується використовувати тільки для вузького кола сценаріїв, для яких не підходять інші типи даних.

Значення uniqueidentifier можна використовувати в операторах порівняння. Однак їх впорядкування реалізовано без використання поразрядного порівняння. Над значеннями uniqueidentifier можна виконувати тільки операції порівняння (=, <>, <,>, <=,>=), А також перевірку на значення NULL (IS NULL і IS NOT NULL). Інші арифметичні оператори заборонені.

У структурах Guid і SqlGuid є метод CompareTo для порівняння різних значень GUID. Однак методи System.Guid.CompareTo і SqlTypes.SqlGuid.CompareTo реалізовані по-різному. У SqlGuid метод CompareTo реалізується за допомогою поведінки SQL Server в найбільш значущих останніх 6 байтах значення. У Guid оцінюються всі 16 байт. У наступному прикладі демонструється ця різниця. У першій частині коду показані несортовані значення Guid. у другій частині - сортовані значення Guid. У третій частині показані відсортовані значення SqlGuid. Вихідні дані показані після лістингу коду.

Схожі статті