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

Sequenza vs identità

Penso che qui troverai la tua risposta

Usando l'attributo identity per una colonna, puoi generare facilmente numeri con incremento automatico (che spesso vengono usati come chiave primaria). ConSequence, sarà un oggetto diverso che puoi allegare a una colonna atable durante l'inserimento. A differenza dell'identità, il numero successivo per il valore della colonna verrà recuperato dalla memoria anziché dal disco:ciò rende Sequence significativamente più veloce di Identity. Lo vedremo nei prossimi esempi.

E qui:

Sequenze:le sequenze sono state richieste dalla community di SQL Server per anni e sono incluse in questa versione. La sequenza è un oggetto definito dall'utente che genera una sequenza di un numero. Ecco un esempio di utilizzo della sequenza.

e anche qui:

Un oggetto sequenza di SQL Server genera una sequenza di numeri proprio come una colonna di identità nelle tabelle sql. Ma il vantaggio dei numeri di sequenza è che l'oggetto numero di sequenza non è limitato a un singolo sqltable.

e su msdn puoi anche leggere di più sull'utilizzo e perché ne abbiamo bisogno (qui):

Una sequenza è un oggetto associato a uno schema definito dall'utente che genera una sequenza di valori numerici in base alla specifica con cui è stata creata la sequenza. La sequenza di valori numerici viene generata in ordine crescente o decrescente a un intervallo definito e può scorrere (ripetere) come richiesto. Le sequenze, a differenza delle colonne Identity, non sono associate alle tabelle. Un'applicazione fa riferimento a un oggetto sequenza per ricevere il suo valore successivo. La relazione tra sequenze e tabelle è controllata dall'applicazione. Le applicazioni utente possono fare riferimento a un oggetto sequenza e coordinare le chiavi dei valori su più righe e tabelle.

Una sequenza viene creata indipendentemente dalle tabelle utilizzando l'istruzione CREATESEQUENCE. Le opzioni consentono di controllare l'incremento, i valori massimi e minimi, il punto di partenza, la capacità di riavvio automatico e la memorizzazione nella cache per migliorare le prestazioni. Per informazioni sulle opzioni, vedere CREA SEQUENZA.

A differenza dei valori della colonna Identity, che vengono generati quando vengono inserite le righe, un'applicazione può ottenere il numero di sequenza successivo prima di inserire la riga chiamando la funzione NEXT VALUE FOR. Il numero di sequenza viene allocato quando viene chiamato NEXT VALUE FOR anche se il numero non viene mai inserito in una tabella. La funzione NEXT VALUE FOR può essere utilizzata come valore predefinito per una colonna in una definizione di tabella. Usasp_sequence_get_range per ottenere un intervallo di più numeri di sequenza immediatamente.

Una sequenza può essere definita come qualsiasi tipo di dati intero. Se il tipo di dati non è specificato, per impostazione predefinita una sequenza è bigint.