Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het GUID-gegevenstype (Globally Unique Identifier) in SQL Server wordt vertegenwoordigd door het uniqueidentifier gegevenstype, waarin een binaire waarde van 16 bytes wordt opgeslagen. Een GUID is een binair getal en het belangrijkste gebruik ervan is een id die uniek moet zijn in een netwerk met veel computers op veel sites. GUID's kunnen worden gegenereerd door de functie Transact-SQL NEWID aan te roepen en is gegarandeerd uniek over de hele wereld. Zie uniqueidentifier (Transact-SQL) voor meer informatie.
Werken met SqlGuid-waarden
Omdat GUID's waarden lang en verborgen zijn, zijn ze niet zinvol voor gebruikers. Als willekeurig gegenereerde GUID's worden gebruikt voor sleutelwaarden en u veel rijen invoegt, krijgt u willekeurige I/O in uw indexen, wat de prestaties negatief kan beïnvloeden. GUID's zijn ook relatief groot in vergelijking met andere gegevenstypen. Over het algemeen raden we u aan alleen GUID's te gebruiken voor zeer smalle scenario's waarvoor geen ander gegevenstype geschikt is.
GUID-waarden vergelijken
Vergelijkingsoperatoren kunnen worden gebruikt met uniqueidentifier waarden. Volgorde wordt echter niet geïmplementeerd door de bitpatronen van de twee waarden te vergelijken. De enige bewerkingen die zijn toegestaan op basis van een uniqueidentifier waarde zijn vergelijkingen (=, <>, , <, ><=>) en het controleren op NULL (IS NULL en IS NOT NULL). Er zijn geen andere rekenkundige operatoren toegestaan.
Beide Guid en SqlGuid hebben een CompareTo methode voor het vergelijken van verschillende GUID-waarden.
System.Guid.CompareTo En SqlTypes.SqlGuid.CompareTo worden echter anders geïmplementeerd.
SqlGuid implementeert CompareTo volgens het gedrag van SQL Server, waarbij de laatste zes bytes van een waarde het belangrijkst zijn.
Guid evalueert alle 16 bytes. In het volgende voorbeeld ziet u dit gedragsverschil. In de eerste sectie met code worden niet-gesorteerde Guid waarden weergegeven en in de tweede codesectie worden de gesorteerde Guid waarden weergegeven. In de derde sectie ziet u de gesorteerde SqlGuid waarden. De uitvoer wordt weergegeven onder de codevermelding.
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($" {guidValue}");
}
Console.WriteLine("");
// Sort the Guids.
guidList.Sort();
// Display the sorted Guid values.
Console.WriteLine("Sorted Guids:");
foreach (Guid guidSorted in guidList)
{
Console.WriteLine($" {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($" {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
In dit voorbeeld worden de volgende resultaten gegenereerd.
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