sql >> Databáze >  >> RDS >> Sqlserver

Sekvence vs identita

Myslím, že odpověď najdete zde

Pomocí atributu identity pro sloupec můžete snadno generovat automaticky se zvyšující čísla (která se často používají jako primární klíč). S Sequence to bude jiný objekt, který můžete při vkládání připojit ke sloupci tabulky. Na rozdíl od identity bude další číslo pro hodnotu sloupce načteno z paměti, nikoli z disku – díky tomu je sekvence výrazně rychlejší než Identita. To uvidíme v následujících příkladech.

A tady:

Sekvence:Sekvence jsou požadovány komunitou SQL Server již roky a jsou součástí této verze. Sekvence je uživatelsky definovaný objekt, který generuje posloupnost čísel. Zde je příklad použití Sequence.

a zde také:

Objekt sekvence SQL Server generuje posloupnost čísel stejně jako sloupec identity v tabulkách SQL. Ale výhodou sekvenčních čísel je, že objekt sekvenčních čísel není omezen pouze jedním sqltable.

a na msdn si také můžete přečíst více o použití a proč to potřebujeme (zde):

Sekvence je uživatelem definovaný objekt vázaný na schéma, který generuje sekvenci číselných hodnot podle specifikace, se kterou byla sekvence vytvořena. Posloupnost číselných hodnot je generována ve vzestupném nebo sestupném pořadí v definovaném intervalu a může se cyklicky (opakovat) podle potřeby. Sekvence, na rozdíl od sloupců identity, nejsou spojeny s tabulkami. Aplikace odkazuje na sekvenční objekt, aby získala svou další hodnotu. Vztah mezi sekvencemi a tabulkami je řízen aplikací. Uživatelské aplikace mohou odkazovat na sekvenční objekt a koordinovat klíče hodnot ve více řádcích a tabulkách.

Sekvence je vytvořena nezávisle na tabulkách pomocí příkazu CREATESEQUENCE. Možnosti vám umožňují ovládat přírůstek, maximální a minimální hodnoty, počáteční bod, schopnost automatického restartování a ukládání do mezipaměti pro zlepšení výkonu. Informace o možnostech naleznete v části VYTVOŘENÍ SEKVENCE.

Na rozdíl od hodnot sloupců identity, které se generují při vkládání řádků, může aplikace před vložením řádku získat další pořadové číslo voláním funkce NEXT VALUE FOR. Pořadové číslo je přiděleno při volání NEXT VALUE FOR, i když číslo není nikdy vloženo do tabulky. Funkci NEXT VALUE FOR lze použít jako výchozí hodnotu pro sloupec v definici tabulky. Usesp_sequence_get_range k získání rozsahu více sekvenčních čísel atonce.

Sekvenci lze definovat jako libovolný celočíselný datový typ. Není-li datový typ zadán, použije se jako výchozí posloupnost bigint.



  1. CHYBA:neukončený řetězec v uvozovkách na nebo blízko

  2. Jak MAKETIME() funguje v MariaDB

  3. Pomocí MariaDB

  4. Vyladění operací vstupu/výstupu (I/O) pro PostgreSQL