GUID ve uniqueidentifier Değerlerini Karşılaştırma
SQL Server'daki genel benzersiz tanımlayıcı (GUID) veri türü, 16 baytlık ikili değeri depolayan veri türüyle uniqueidentifier
temsil edilir. GUID bir ikili sayıdır ve ana kullanımı, birçok konumda çok sayıda bilgisayarı olan bir ağda benzersiz olması gereken bir tanımlayıcıdır. GUID'ler Transact-SQL NEWID işlevi çağrılarak oluşturulabilir ve tüm dünyada benzersiz olması garanti edilir. 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ğerleri için rastgele oluşturulan GUID'ler kullanılırsa ve çok fazla satır eklerseniz, dizinlerinize rastgele G/Ç girersiniz ve bu da performansı olumsuz etkileyebilir. GUID'ler, diğer veri türleriyle karşılaştırıldığında da nispeten büyüktür. Genel olarak GUID'lerin yalnızca başka hiçbir veri türünün uygun olmadığı çok dar senaryolar için kullanılmasını ö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ırılarak uygulanmaz. Bir uniqueidentifier
değere karşı izin verilen tek işlemler karşılaştırmalar (=, <>, <, , >= <, >=) ve NULL (IS NULL ve IS NOT NULL) denetimidir. Başka aritmetik işleçlere izin verilmez.
SqlGuid Hem hem de Guid farklı GUID değerlerini karşılaştırmak için bir CompareTo
yöntemi vardır. Ancak ve System.Guid.CompareTo
SqlTypes.SqlGuid.CompareTo
farklı şekilde uygulanır. SqlGuidCompareTo
bir değerin son altı baytında en önemli olan SQL Server davranışını kullanarak uygular. Guid 16 baytı da değerlendirir. Aşağıdaki örnekte bu davranış farkı gösterilmektedir. Kodun ilk bölümünde sıralanmamış Guid değerler, ikinci bölümü ise sıralanmış Guid değerleri gösterir. Üçüncü bölümde sıralanmış SqlGuid değerler gösterilir. Çıkış, kod listesinin altında görüntülenir.
static void WorkWithGuids()
{
// Create an ArrayList and fill it with Guid values.
ArrayList guidList = new()
{
new Guid("3AAAAAAA-BBBB-CCCC-DDDD-2EEEEEEEEEEE"),
new Guid("2AAAAAAA-BBBB-CCCC-DDDD-1EEEEEEEEEEE"),
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()
{
new SqlGuid("3AAAAAAA-BBBB-CCCC-DDDD-2EEEEEEEEEEE"),
new SqlGuid("2AAAAAAA-BBBB-CCCC-DDDD-1EEEEEEEEEEE"),
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