GUID ve uniqueidentifier Değerlerini KarşılaştırmaComparing GUID and uniqueidentifier Values

SQL Server genel benzersiz tanımlayıcı (GUID) veri türü, 16 baytlık ikili değer depolayan uniqueidentifier veri türü tarafından temsil edilir.The globally unique identifier (GUID) data type in SQL Server is represented by the uniqueidentifier data type, which stores a 16-byte binary value. GUID, ikili bir sayıdır ve ana kullanımı, birçok sitede çok sayıda bilgisayarı olan bir ağda benzersiz olması gereken bir tanımlayıcı olarak kullanılır.A GUID is a binary number, and its main use is as an identifier that must be unique in a network that has many computers at many sites. GUID 'Ler Transact-SQL NEıD işlevi çağırarak oluşturulabilir ve dünyanın tamamında benzersiz olması garanti edilir.GUIDs can be generated by calling the Transact-SQL NEWID function, and is guaranteed to be unique throughout the world. Daha fazla bilgi için bkz. uniqueidentifier (Transact-SQL).For more information, see uniqueidentifier (Transact-SQL).

Sqlguıd değerleriyle çalışmaWorking with SqlGuid Values

GUID değerleri uzun ve belirsiz olduğundan, kullanıcılar için anlamlı değildir.Because GUIDs values are long and obscure, they are not meaningful for users. Rastgele oluşturulan GUID 'Ler anahtar değerleri için kullanılırsa ve çok sayıda satır eklerseniz dizinlerinizle rastgele g/ç elde edersiniz ve bu da performansı olumsuz etkileyebilir.If randomly generated GUIDs are used for key values and you insert a lot of rows, you get random I/O into your indexes, which can negatively impact performance. Diğer veri türleriyle karşılaştırıldığında, GUID 'Ler de nispeten büyük.GUIDs are also relatively large when compared to other data types. Genel olarak, yalnızca başka bir veri türü uygun olmayan dar senaryolar için GUID 'Leri kullanmanızı öneririz.In general we recommend using GUIDs only for very narrow scenarios for which no other data type is suitable.

GUID değerlerini karşılaştırmaComparing GUID Values

Karşılaştırma işleçleri, uniqueidentifier değerleriyle birlikte kullanılabilir.Comparison operators can be used with uniqueidentifier values. Ancak sıralama, iki değerin bit desenleri karşılaştırılmasıyla uygulanmaz.However, ordering is not implemented by comparing the bit patterns of the two values. uniqueidentifier bir değere karşı izin verilen tek işlemler karşılaştırmalar (=, < >, <, >, <=, > =) ve NULL olup olmadığını denetler (NULL ve NULL değildir).The only operations that are allowed against a uniqueidentifier value are comparisons (=, <>, <, >, <=, >=) and checking for NULL (IS NULL and IS NOT NULL). Başka aritmetik işleçlere izin verilmez.No other arithmetic operators are allowed.

Hem Guid hem de SqlGuid, farklı GUID değerlerini karşılaştırmak için bir CompareTo metoduna sahiptir.Both Guid and SqlGuid have a CompareTo method for comparing different GUID values. Ancak, System.Guid.CompareTo ve SqlTypes.SqlGuid.CompareTo farklı şekilde uygulanır.However, System.Guid.CompareTo and SqlTypes.SqlGuid.CompareTo are implemented differently. SqlGuid, bir değerin son altı baytında en önemli olan SQL Server davranışını kullanarak CompareTo uygular.SqlGuid implements CompareTo using SQL Server behavior, in the last six bytes of a value are most significant. Guid tüm 16 baytları değerlendirir.Guid evaluates all 16 bytes. Aşağıdaki örnekte bu davranış farkı gösterilmektedir.The following example demonstrates this behavioral difference. Kodun ilk bölümünde sıralanmamış Guid değerleri görüntülenir ve kodun ikinci bölümü sıralanmış Guid değerlerini gösterir.The first section of code displays unsorted Guid values, and the second section of code shows the sorted Guid values. Üçüncü bölümde sıralanmış SqlGuid değerleri gösterilir.The third section shows the sorted SqlGuid values. Çıktı, kod listesinin altında görüntülenir.The output is displayed beneath the code listing.

private static void WorkWithGuids()
{
    // Create an ArrayList and fill it with Guid values.
    ArrayList guidList = new ArrayList();
    guidList.Add(new Guid("3AAAAAAA-BBBB-CCCC-DDDD-2EEEEEEEEEEE"));
    guidList.Add(new Guid("2AAAAAAA-BBBB-CCCC-DDDD-1EEEEEEEEEEE"));
    guidList.Add(new Guid("1AAAAAAA-BBBB-CCCC-DDDD-3EEEEEEEEEEE"));

    // Display the unsorted Guid values.
    Console.WriteLine("Unsorted Guids:");
    foreach (Guid guidValue in guidList)
    {
        Console.WriteLine(" {0}", guidValue);
    }
    Console.WriteLine("");

    // Sort the Guids.
    guidList.Sort();

    // Display the sorted Guid values.
    Console.WriteLine("Sorted Guids:");
    foreach (Guid guidSorted in guidList)
    {
        Console.WriteLine(" {0}", guidSorted);
    }
    Console.WriteLine("");
    
    // Create an ArrayList of SqlGuids.
    ArrayList sqlGuidList = new ArrayList();
    sqlGuidList.Add(new SqlGuid("3AAAAAAA-BBBB-CCCC-DDDD-2EEEEEEEEEEE"));
    sqlGuidList.Add(new SqlGuid("2AAAAAAA-BBBB-CCCC-DDDD-1EEEEEEEEEEE"));
    sqlGuidList.Add(new SqlGuid("1AAAAAAA-BBBB-CCCC-DDDD-3EEEEEEEEEEE"));

    // Sort the SqlGuids. The unsorted SqlGuids are in the same order
    // as the unsorted Guid values.
    sqlGuidList.Sort();

    // Display the sorted SqlGuids. The sorted SqlGuid values are ordered
    // differently than the Guid values.
    Console.WriteLine("Sorted SqlGuids:");
    foreach (SqlGuid sqlGuidValue in sqlGuidList)
    {
        Console.WriteLine(" {0}", sqlGuidValue);
    }
}
Private Sub WorkWithGuids()

    ' Create an ArrayList and fill it with Guid values.
    Dim guidList As New ArrayList()
    guidList.Add(New Guid("3AAAAAAA-BBBB-CCCC-DDDD-2EEEEEEEEEEE"))
    guidList.Add(New Guid("2AAAAAAA-BBBB-CCCC-DDDD-1EEEEEEEEEEE"))
    guidList.Add(New Guid("1AAAAAAA-BBBB-CCCC-DDDD-3EEEEEEEEEEE"))

    ' Display the unsorted Guid values.
    Console.WriteLine("Unsorted Guids:")
    For Each guidValue As Guid In guidList
        Console.WriteLine("{0}", guidValue)
    Next
    Console.WriteLine()

    ' Sort the Guids.
    guidList.Sort()

    ' Display the sorted Guid values.

    Console.WriteLine("Sorted Guids:")
    For Each guidSorted As Guid In guidList
        Console.WriteLine("{0}", guidSorted)
    Next
    Console.WriteLine()

    ' Create an ArrayList of SqlGuids.
    Dim sqlGuidList As New ArrayList()
    sqlGuidList.Add(New SqlGuid("3AAAAAAA-BBBB-CCCC-DDDD-2EEEEEEEEEEE"))
    sqlGuidList.Add(New SqlGuid("2AAAAAAA-BBBB-CCCC-DDDD-1EEEEEEEEEEE"))
    sqlGuidList.Add(New SqlGuid("1AAAAAAA-BBBB-CCCC-DDDD-3EEEEEEEEEEE"))

    ' Sort the SqlGuids. The unsorted SqlGuids are in the same order
    ' as the unsorted Guid values.
    sqlGuidList.Sort()

    ' Display the sorted SqlGuids. The sorted SqlGuid values are 
    ' ordered differently than the Guid values.
    Console.WriteLine("Sorted SqlGuids:")
    For Each sqlGuidValue As SqlGuid In sqlGuidList
        Console.WriteLine("{0}", sqlGuidValue)
    Next
End Sub

Bu örnek aşağıdaki sonuçları üretir.This example produces the following results.

Unsorted Guids:  
3aaaaaaa-bbbb-cccc-dddd-2eeeeeeeeeee  
2aaaaaaa-bbbb-cccc-dddd-1eeeeeeeeeee  
1aaaaaaa-bbbb-cccc-dddd-3eeeeeeeeeee  
  
Sorted Guids:  
1aaaaaaa-bbbb-cccc-dddd-3eeeeeeeeeee  
2aaaaaaa-bbbb-cccc-dddd-1eeeeeeeeeee  
3aaaaaaa-bbbb-cccc-dddd-2eeeeeeeeeee  
  
Sorted SqlGuids:  
2aaaaaaa-bbbb-cccc-dddd-1eeeeeeeeeee  
3aaaaaaa-bbbb-cccc-dddd-2eeeeeeeeeee  
1aaaaaaa-bbbb-cccc-dddd-3eeeeeeeeeee  

Ayrıca bkz.See also