Det er svært fordelaktig å lagre data i SQL Server temp tabeller heller enn å manipulere eller arbeide med faste tabeller. La oss si at du vil ha full DDL eller DML tilgang til en tabell, men ikke har det. Du kan bruke din eksisterende les tilgang til å trekke data i en SQL Server midlertidige tabellen og gjør justeringer fra det. Eller du ikke har tillatelse til å opprette en tabell i en eksisterende database, kan du opprette en SQL Server-temp tabellen som du kan manipulere., Endelig, du kan være i en situasjon hvor du trenger dataene bare skal være synlige i den gjeldende økten.
SQL Server støtter mange typer av SQL Server temp tabeller som kan være svært nyttig.
Før vi går videre, hvis du ønsker å følge sammen med noen kodeeksempler, foreslår jeg at du åpner SQL Server Management Studio:
Lokale SQL temp tabeller
Lokale SQL Server temp tabeller som er opprettet ved hjelp av pund symbol eller «hashtag» etterfulgt av navnet til bordet. For eksempel: #Table_name. SQL temp tabeller som er opprettet i tempdb database., En lokal SQL Server temp tabellen er kun synlig for den gjeldende økten. Det kan ikke ses av eller brukes av prosesser eller spørsmål utenfor økt den er deklarert i.
Her er en rask eksempel for å ta et resultatsett, og å sette det inn i en SQL Server-temp tabellen.
En av de mest ofte brukt scenarier for SQL Server temp tabeller er i en loop av noe slag. For eksempel, du vil behandle data for en SQL-setning, og det trenger du et sted å lagre elementer for-løkke til å lese gjennom. Det gir en rask og effektiv måte å gjøre det., Se koden eksempel ovenfor, loop kan nå referanse SQL Server temp tabellen og behandle postene som oppfyller kriteriene for målet ditt.
en Annen grunn til å bruke SQL Server temp tabeller er at du har noen krevende behandling å gjøre i din sql-setningen. La oss si at du oppretter en delta, og hver gang du trenger å trekke poster fra som resultat det har til å behandle denne bli hele igjen. Hvorfor ikke bare behandle dette resultatet satt en gang og kaste den records inn i en SQL-temp tabellen? Så du kan ha resten av sql-setningen refererer til SQL temp tabellen navn., Ikke bare gjør dette for å spare på dyre-spørring behandling, men det kan også gjøre koden din til å se litt renere.
Det er ett punkt som jeg ønsker å gjøre men. Hvis økten som vi arbeider i, har senere nestede økter, SQL Server temp tabeller vil være synlig i økter lavere i hierarkiet, men ikke over i hierarkiet. Vennligst tillat meg å visualisere dette.
I denne raske diagram, en SQL temp tabellen er opprettet i Sesjon 2. Øktene under det (3 økter og økt 4) er i stand til å se SQL Server temp tabellen., Men Økt 1, som er over sesjon 2, vil ikke være i stand til å se SQL Server temp tabellen.
SQL-temp tabellen er mistet eller ødelagt når økten frakoblinger. Mange ganger vil du se utviklere bruke «DROP #Table_Name» kommando på slutten av sin uttalelse bare for å rydde opp. Men det er helt opp til deg og hva du prøver å oppnå.,
merk Også at i tilfelle av navnet konflikt (husk at SQL Server temp tabeller som er opprettet i tempdb) SQL server vil legge til et suffiks til enden av bordet, slik at det er unikt innenfor tempdb database. Men denne prosessen er transparent for fremkaller – /brukeren. Du kan bruke det samme navnet som du erklært som det er begrenset til at økt.
Global SQL temp tabeller
Global SQL temp tabellene er nyttig når du vil du vil resultatet satt synlig for alle andre økter. Ingen trenger å sette tillatelser., Hvem som helst kan sette inn verdier, endre, eller hente poster fra tabellen. Merk også at hvem som helst kan legge på bordet. Som Lokale SQL Server temp-tabeller, de er droppet når økten kobler ut og det er ikke lenger noen flere referanser til bordet. Du kan alltid bruke «DROP» – kommandoen til å rydde det opp manuelt. Der er noe som jeg vil anbefale.
for Å lage en global SQL temp tabellen, kan du bare bruke to pund symboler foran bordet. Eksempel: ##Global_Table_Name.,
Tabell Variabler
Tabellen variabler er opprettet som en hvilken som helst annen variabel, bruker DECLARE-setning. Mange tror at tabellen variabler som kun eksisterer i minnet, men det er slett ikke sant. De bor i tempdb database mye som lokale SQL Server temp bord. Liker også lokale SQL temp-bord, bord variabler er kun tilgjengelig i økten som opprettet dem. Imidlertid, i motsetning til SQL temp tabeller tabell variabel er bare tilgjengelig i den gjeldende satsvise. De er ikke synlig utenfor batch, betyr begrepet økt hierarki kan være noe oversett.,
så langt Som ytelsen er opptatt av tabell variabler er nyttige med små mengder data (som bare noen få rader). Ellers en SQL Server-temp tabellen er nyttig når du blar gjennom store mengder data. Så for de fleste skript, vil du mest sannsynlig se bruk av en SQL Server-temp tabellen i motsetning til en tabell variabel. Ikke for å si at man er mer nyttige enn andre, det er bare du har å velge riktig verktøy til jobben.
Her er et kjapt eksempel på å sette opp og bruke en tabell variabel.,
Vi har laget en tabell variabel som vil holde informasjon om totale mengder av et bestemt produkt som selges. Dette er et veldig forenklet eksempel, og vi ville ikke bruke den hvis det finnes en rekke rader. Men dersom vi bare ser på noen produkter kan dette virkelig godt. Når bordet variabel er befolket deretter kan du bli med på dette som en tabell til enda en annen tabell og samle den informasjonen du trenger. Så det er en stor fleksibilitet og lar utvikleren å være ganske kreativ.
Også, på et siste notat, i form av transaksjoner på bordet variabler., Hvis en utvikler ruller tilbake en transaksjon som omfatter endringer i tabellen variabler, de endringene som er gjort i tabell variabler innenfor denne bestemt transaksjon vil forbli intakt. Det vil si, andre deler av denne transaksjonen i spørsmålet vil bli rullet tilbake, men noe å referere til tabellen variable vil ikke, med mindre den delen av skriptet er feil.,
- Forfatter
- Siste Innlegg
Han startet sin karriere i DET helpdesk verden og til slutt flyttet inn i nettverk/systemer administrator siden av ting. Etter noen tid, utviklet han en hengivenhet for å arbeide med Databaser (hovedsakelig SQL Server) og har fokusert sin karriere på at for de siste åtte årene., Han har jobbet for en rekke bransjer i både store og små miljøer, alle med ulike behov.
SQL Shack har gitt ham en mulighet til å bidra til et samfunn som har gitt ham så mye opp gjennom årene.,
Vis alle innlegg av Aamir Syed
- Er SQL Server Alltid Kryptert, for sensitive data kryptering, til høyre for miljø – 27 juli, 2018
- Bruk saker for Spørring Butikk i SQL Server – 18 juli 2018
- Ved å Bruke SQL Temp Tabeller vs. Tabell Variabler – februar 21, 2017