È molto utile memorizzare i dati nelle tabelle temporanee di SQL Server piuttosto che manipolare o lavorare con tabelle permanenti. Diciamo che vuoi l’accesso completo a DDL o DML a una tabella, ma non ce l’hai. È possibile utilizzare l’accesso in lettura esistente per estrarre i dati in una tabella temporanea di SQL Server e apportare modifiche da lì. Oppure non si dispone delle autorizzazioni per creare una tabella nel database esistente, è possibile creare una tabella temporanea di SQL Server che è possibile manipolare., Infine, potresti trovarti in una situazione in cui è necessario che i dati siano visibili solo nella sessione corrente.
SQL Server supporta alcuni tipi di tabelle temporanee di SQL Server che possono essere molto utili.
Prima di procedere, se si desidera seguire tutti gli esempi di codice, suggerisco di aprire SQL Server Management Studio:
Tabelle temporanee SQL locali
Le tabelle temporanee SQL locali vengono create utilizzando il simbolo pound o “hashtag” seguito dal nome della tabella. Ad esempio: #Nome_tabella. Le tabelle temp SQL vengono create nel database tempdb., Una tabella temporanea locale di SQL Server è visibile solo per la sessione corrente. Non può essere visto o utilizzato da processi o query al di fuori della sessione in cui è dichiarato.
Ecco un rapido esempio di prendere un set di risultati e inserirlo in una tabella temporanea di SQL Server.
Uno degli scenari più utilizzati per le tabelle temporanee di SQL Server è all’interno di un ciclo di qualche tipo. Ad esempio, si desidera elaborare i dati per un’istruzione SQL e è necessario un luogo in cui archiviare gli elementi per la lettura del ciclo. Fornisce un mezzo rapido ed efficiente per farlo., Vedi l’esempio di codice sopra, il tuo ciclo può ora fare riferimento alla tabella temp di SQL Server ed elaborare i record che soddisfano i criteri del tuo obiettivo.
Un altro motivo per utilizzare le tabelle temp di SQL Server è che hai qualche elaborazione impegnativa da fare nella tua istruzione sql. Diciamo che si crea un join, e ogni volta che è necessario estrarre i record da quel set di risultati deve elaborare questo join tutto da capo. Perché non elaborare questo set di risultati una volta e gettare i record in una tabella temporanea SQL? Quindi è possibile che il resto dell’istruzione sql si riferisca al nome della tabella temp SQL., Non solo questo risparmia sulla costosa elaborazione delle query, ma potrebbe anche rendere il tuo codice un po ‘ più pulito.
C ‘ un punto che voglio fare comunque. Se la sessione in cui stiamo lavorando ha sessioni annidate successive, le tabelle temporanee di SQL Server saranno visibili nelle sessioni inferiori nella gerarchia, ma non sopra nella gerarchia. Per favore, permettetemi di visualizzare questo.
In questo diagramma rapido, viene creata una tabella temporanea SQL nella Sessione 2. Le sessioni sottostanti (sessioni 3 e sessione 4) sono in grado di vedere la tabella temp di SQL Server., Ma la sessione 1, che è sopra la sessione 2, non sarà in grado di vedere la tabella temporanea di SQL Server.
La tabella temp SQL viene eliminata o distrutta una volta che la sessione si disconnette. Molte volte vedrai gli sviluppatori usare il comando” DROP #Table_Name ” alla fine della loro istruzione solo per ripulire. Ma dipende interamente da te e da ciò che stai cercando di realizzare.,
Si noti inoltre che in caso di conflitto di nomi (ricordare che le tabelle temp di SQL Server sono create in tempdb) SQL server aggiungerà un suffisso alla fine del nome della tabella in modo che sia univoco all’interno del database tempdb. Ma questo processo è trasparente per lo sviluppatore / utente. Puoi usare lo stesso nome che hai dichiarato poiché è limitato a quella sessione.
Tabelle temp SQL globali
Le tabelle temp SQL globali sono utili quando si desidera che il set di risultati sia visibile a tutte le altre sessioni. Non è necessario impostare le autorizzazioni., Chiunque può inserire valori, modificare o recuperare record dalla tabella. Si noti inoltre che chiunque può far cadere il tavolo. Come le tabelle temporanee locali di SQL Server, vengono eliminate una volta che la sessione si disconnette e non ci sono più riferimenti alla tabella. Puoi sempre usare il comando” DROP ” per pulirlo manualmente. Che è qualcosa che consiglierei.
Per creare una tabella temporanea SQL globale, è sufficiente utilizzare due simboli pound davanti al nome della tabella. Esempio: # # Global_Table_Name.,
Variabili di tabella
Le variabili di tabella vengono create come qualsiasi altra variabile, utilizzando l’istruzione DECLARE. Molti credono che le variabili di tabella esistano solo in memoria, ma semplicemente non è vero. Risiedono nel database tempdb proprio come le tabelle temp di SQL Server locali. Inoltre, come le tabelle temporanee SQL locali, le variabili di tabella sono accessibili solo all’interno della sessione che le ha create. Tuttavia, a differenza delle tabelle temp SQL, la variabile table è accessibile solo all’interno del batch corrente. Non sono visibili al di fuori del batch, il che significa che il concetto di gerarchia delle sessioni può essere in qualche modo ignorato.,
Per quanto riguarda le prestazioni le variabili della tabella sono utili con piccole quantità di dati (come solo poche righe). In caso contrario, una tabella temporanea di SQL Server è utile quando si spulciano grandi quantità di dati. Quindi, per la maggior parte degli script, molto probabilmente vedrai l’uso di una tabella temporanea di SQL Server anziché di una variabile di tabella. Per non dire che uno è più utile dell’altro, è solo che devi scegliere lo strumento giusto per il lavoro.
Ecco un rapido esempio di impostazione e utilizzo di una variabile di tabella.,
Abbiamo creato una variabile tabella che conterrà informazioni riguardanti le quantità totali di un determinato prodotto venduto. Questo è un esempio molto semplificato e non lo useremmo se contenesse molte righe. Ma se stessimo solo guardando alcuni prodotti questo potrebbe davvero bene. Una volta popolata la variabile della tabella, puoi unirla come tabella a un’altra tabella e raccogliere tutte le informazioni di cui hai bisogno. Quindi c’è molta flessibilità e consente allo sviluppatore di essere abbastanza creativo.
Anche, in una nota finale, in termini di transazioni su variabili di tabella., Se uno sviluppatore esegue il rollback di una transazione che include modifiche alle variabili della tabella, le modifiche apportate alle variabili della tabella all’interno di questa particolare transazione rimarranno intatte. Vale a dire, altre parti di questa transazione in questione verranno ripristinate, ma qualsiasi cosa che faccia riferimento alla variabile della tabella non lo farà, a meno che quella parte del tuo script non sia in errore.,
- Autore
- Post Recenti
Ha iniziato la sua carriera IT nel mondo helpdesk e alla fine si è trasferito nel lato networking/amministratore di sistemi delle cose. Dopo qualche tempo, ha sviluppato un affetto per lavorare con i database (principalmente SQL Server) e ha concentrato la sua carriera su questo negli ultimi otto anni., Ha lavorato per varie industrie sia in ambienti grandi che piccoli tutti con esigenze diverse.
SQL Shack gli ha fornito l’opportunità di contribuire a una comunità che gli ha dato così tanto nel corso degli anni.,
Visualizza tutti i messaggi di Aamir Syed
- SQL Server È Sempre Criptato, per i dati sensibili di crittografia, giusto per il vostro ambiente – luglio 27, 2018
- i casi d’Uso per la ricerca di Negozio in SQL Server – 18 luglio 2018
- in caso di Utilizzo di SQL Tabelle temporanee vs Variabili di Tabella – 21 febbraio 2017