sql >> Database teknologi >  >> RDS >> Sqlserver

Sekvens vs identitet

Jeg tror, ​​du vil finde dit svar her

Ved at bruge identitetsattributten for en kolonne kan du nemt generere automatiske stigningsnumre (som så ofte bruges som en primær nøgle). Med Sequence vil det være et andet objekt, som du kan vedhæfte til en aktiv kolonne, mens du indsætter. I modsætning til identitet vil det næste tal for kolonneværdien blive hentet fra hukommelsen i stedet for fra disken – dette gør Sequence betydeligt hurtigere end Identity. Vi vil se dette i kommende eksempler.

Og her:

Sekvenser:Sekvenser er blevet efterspurgt af SQL Server-fællesskabet i årevis, og det er inkluderet i denne udgivelse. Sekvens er et brugerdefineret objekt, der genererer en sekvens af et tal. Her er et eksempel, der bruger Sequence.

og også her:

Et SQL Server-sekvensobjekt genererer talrækker ligesom en identitetskolonne i sql-tabeller. Men fordelen ved sekvensnumre er, at sekvensnummerobjektet ikke er begrænset med enkelt sqltable.

og på msdn kan du også læse mere om brug og hvorfor vi har brug for det (her):

En sekvens er et brugerdefineret skemabundet objekt, der genererer en sekvens af numeriske værdier i henhold til den specifikation, som sekvensen blev oprettet med. Rækkefølgen af ​​numeriske værdier genereres i en stigende eller faldende rækkefølge med et defineret interval og kan cykle (gentage) som anmodet. Sekvenser, i modsætning til identitetskolonner, er ikke knyttet til tabeller. En applikation refererer til et sekvensobjekt for at modtage dets næste værdi. Forholdet mellem sekvenser og tabeller styres af applikationen. Brugerapplikationer kan henvise til et sekvensobjekt og koordinere værditasterne på tværs af flere rækker og tabeller.

En sekvens oprettes uafhængigt af tabellerne ved at bruge CREATESEQUENCE-sætningen. Indstillinger giver dig mulighed for at kontrollere stigning, maksimum og minimum værdier, startpunkt, automatisk genstart og caching for at forbedre ydeevnen. Se CREATE SEQUENCE for information om mulighederne.

I modsætning til identitetskolonneværdier, som genereres, når rækker indsættes, kan en applikation få det næste sekvensnummer, før rækken indsættes, ved at kalde funktionen NÆSTE VÆRDI FOR. Sekvensnummeret tildeles, når NEXT VALUE FOR kaldes, selvom nummeret aldrig er indsat i en tabel. Funktionen NÆSTE VÆRDI FOR kan bruges som standardværdi for en kolonne i en tabeldefinition. Brug sp_sequence_get_range til at få et interval med flere sekvensnumre samtidig.

En sekvens kan defineres som enhver heltalsdatatype. Hvis datatypen ikke er angivet, er en sekvens som standard bigint.



  1. Hvordan tæller man rækker, der opfylder en betingelse i Redshift/Postgres?

  2. SQL Server Skift databasenavn

  3. Hvordan man forstår en FORKLAR ANALYSE

  4. Tillad alle fjernforbindelser, MySQL