GUID ve uniqueidentifier Değerlerini Karşılaştırma

SQL Server'daki genel olarak benzersiz tanımlayıcı (GUID) uniqueidentifier veri türü, 16 baytlık ikili değeri depolar veri türüyle temsil edildi. GUID bir ikili sayıdır ve ana kullanımı birçok sitede çok sayıda bilgisayarın olduğu bir ağ içinde benzersiz olması gereken bir tanımlayıcı olarak kullanılır. GUID'ler, Transact-SQL NEWID işlevi çağrılarak oluşturularak oluşturulur ve tüm dünyada benzersiz olması garantidir. Daha fazla bilgi için bkz. uniqueidentifier (Transact-SQL).

SqlGuid Değerleriyle Çalışma

GUID değerleri uzun ve belirsiz olduğundan kullanıcılar için anlamlı değildir. Anahtar değerler için rastgele oluşturulan GUID'ler kullanılıyorsa ve çok fazla satır eklersiniz, dizinlerinize rastgele G/Ç elde edersiniz ve bu da performansı olumsuz etkileyebilir. GUID'ler de diğer veri türlerine kıyasla görece büyüktür. Genel olarak GUID'leri yalnızca başka bir veri türünün uygun olduğu çok dar senaryolar için kullanmanızı öneririz.

GUID Değerlerini Karşılaştırma

Karşılaştırma işleçleri değerlerle uniqueidentifier kullanılabilir. Ancak sıralama, iki değerin bit desenleri karşılaştırarak uygulanmaz. Bir değere karşı izin verilen işlemler uniqueidentifier karşılaştırmalardır (=, <>, , <>, <=, >=) ve NULL (IS NULL ve IS NOT NULL) denetlenmektedir. Başka bir aritmetik işleçlere izin verilmez.

ve değerlerinin GuidSqlGuid her ikisi de CompareTo farklı GUID değerlerini karşılaştırmak için bir yöntemine sahiptir. Ancak ve System.Guid.CompareToSqlTypes.SqlGuid.CompareTo farklı şekilde uygulanır. SqlGuid, bir CompareTo SQL Server son altı bayt içinde en önemli olan davranış kullanılarak uygulanır. Guid 16 baytı da değerlendirir. Aşağıdaki örnek bu davranış farkını gösteriyor. Kodun ilk bölümü sıralanmamış değerleri Guid , ikinci bölümü ise sıralanmış değerleri Guid gösterir. Üçüncü bölümde sıralanmış değerler yer SqlGuid almaktadır. Çıkış, kod listesinin altında görüntülenir.

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.

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.