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

Qual è la differenza tra TEMPORARY TABLE e TABLE VARIABLE in SQL 2008?

Le tabelle temporanee sono come tabelle ordinarie nella maggior parte delle caratteristiche, tranne per il fatto che vanno in TempDB anziché nel database corrente e scompaiono dopo un ambito limitato (a seconda che siano tabelle temporanee basate sulla sessione o globali. Ma tutte le modifiche ai dati nelle tabelle temporanee sono registrato nel registro delle transazioni, con tutte le implicazioni sulle prestazioni che ciò comporta. otoh, puoi anche aggiungere tutti gli indici o viste, o trigger o qualsiasi altra cosa desideri a una tabella temporanea esattamente come faresti a una tabella normale.

Le variabili di tabella sono una sorta di tabella in memoria di scelta rapida (usano anche temp DB). Le modifiche non vengono registrate (questo migliora le prestazioni). Ma puoi ottenere solo un indice su di essi, (poiché gli indici non possono essere creati dopo l'istruzione di dichiarazione iniziale, l'unico indice che puoi creare su una variabile di tabella è quello che può essere incluso nella dichiarazione di variabile di tabella iniziale...

   Declare @Tab Table (myKey integer Primary Key Not Null, data varchar(20)) 

A causa di queste caratteristiche, le tabelle temporanee sono la scelta migliore per tabelle di grandi dimensioni (larghe e con molte righe) e/o che subiranno più di un modello di accesso durante la loro vita, mentre le variabili di tabella sono le migliori quando è necessaria una tabella molto stretta ( keys only table, o chiave con una sola colonna di dati), a cui accederà sempre quella chiave indicizzata...