sql >> Database >  >> RDS >> Sqlserver

Volgorde versus identiteit

Ik denk dat je je antwoord hier zult vinden

Door het identiteitskenmerk voor een kolom te gebruiken, kunt u gemakkelijk automatisch oplopende getallen genereren (die net zo vaak als primaire sleutel worden gebruikt). MetSequence wordt het een ander object dat u tijdens het invoegen aan een tabel kunt bevestigen. In tegenstelling tot identiteit, wordt het volgende nummer voor de kolomwaarde uit het geheugen opgehaald in plaats van uit de schijf - dit maakt Sequence aanzienlijk sneller dan Identity. We zullen dit in de komende voorbeelden zien.

En hier:

Sequenties:Sequenties worden al jaren aangevraagd door de SQL Server-gemeenschap en zijn opgenomen in deze release. Reeks is een door de gebruiker gedefinieerd object dat een reeks van een getal genereert. Hier is een voorbeeld van het gebruik van Reeks.

en ook hier:

Een SQL Server-reeksobject genereert een reeks getallen, net als een identiteitskolom in sql-tabellen. Maar het voordeel van volgnummers is dat het volgnummerobject niet beperkt is tot één sqltable.

en op msdn kun je ook meer lezen over het gebruik en waarom we het nodig hebben (hier):

Een reeks is een door de gebruiker gedefinieerd schemagebonden object dat een reeks numerieke waarden genereert volgens de specificatie waarmee de reeks is gemaakt. De reeks numerieke waarden wordt gegenereerd in een oplopende of aflopende volgorde met een gedefinieerd interval en kan op verzoek worden herhaald (herhaald). Reeksen zijn, in tegenstelling tot identiteitskolommen, niet gekoppeld aan tabellen. Een toepassing verwijst naar een reeksobject om de volgende waarde te ontvangen. De relatie tussen sequenties en tabellen wordt beheerd door de applicatie. Gebruikerstoepassingen kunnen verwijzen naar een reeksobject en de waardensleutels coördineren over meerdere rijen en tabellen.

Een reeks wordt onafhankelijk van de tabellen gemaakt met behulp van de instructie CREATESEQUENCE. Met opties kunt u de toename, maximum- en minimumwaarden, het startpunt, automatisch herstarten en caching beheren om de prestaties te verbeteren. Zie SEQUENTIE MAKEN voor informatie over de opties.

In tegenstelling tot identiteitskolomwaarden, die worden gegenereerd wanneer rijen worden ingevoegd, kan een toepassing het volgende volgnummer verkrijgen voordat de rij wordt ingevoegd door de functie VOLGENDE WAARDE VOOR aan te roepen. Het volgnummer wordt toegewezen wanneer VOLGENDE WAARDE VOOR wordt aangeroepen, zelfs als het nummer nooit in een tabel is ingevoegd. De functie VOLGENDE WAARDE VOOR kan worden gebruikt als de standaardwaarde voor een kolom in een tabeldefinitie. Gebruiksp_sequence_get_range om een ​​reeks van meerdere volgnummers in één keer te krijgen.

Een reeks kan worden gedefinieerd als elk gegevenstype met een geheel getal. Als het gegevenstype niet is opgegeven, wordt een reeks standaard ingesteld op bigint.



  1. Records met maximale waarde ophalen voor elke groep gegroepeerde SQL-resultaten

  2. Dynamische spil in orakel sql

  3. Comprimeer een specifieke partitie binnen een tabel in SQL Server (T-SQL)

  4. Bindende queryparameters op naam met ODP.NET