sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är skillnaden mellan TEMPORARY TABLE och TABLE VARIABLE i SQL 2008?

Temporära tabeller är som vanliga tabeller i de flesta egenskaper, förutom att de går in i TempDB istället för den nuvarande databasen, och de försvinner efter begränsad omfattning (beroende på om de är sessionsbaserade eller globala Temp-tabeller. Men alla ändringar av data i Temp-tabeller är loggas till transaktionsloggen, med alla de prestationskonsekvenser som det innebär. otoh, du kan också lägga till så många index eller vyer, eller triggers, eller vad du vill till en tillfällig tabell precis som du skulle göra i en vanlig tabell.

Tabellvariabler är en slags genvägstabell i minnet (de använder också temp DB). Ändringar av dem loggas inte (detta förbättrar prestandan). Men du kan bara få ett index på dem, (eftersom index inte kan skapas efter den initiala deklarationssatsen, är det enda index du kan skapa på en tabellvariabel det som kan inkluderas i den initiala tabellvariabeldeklarationen...

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

På grund av dessa egenskaper är temporära tabeller ett bättre val för stora tabeller (breda och med många rader) och/eller som kommer att genomgå mer än ett åtkomstmönster under sin livstid, medan tabellvariabler är bäst när du behöver en mycket smal tabell ( endast tabell med nycklar, eller nyckel med endast en datakolumn), som alltid kommer att nås av den indexerade nyckeln...



  1. TSQL Kombinera flera rader till en rad

  2. Konvertera icke-partitionstabell till partitionerad tabell med ONLINE i Oracle PL/SQL

  3. ASP.NET Medlemskap/Rollleverantörer för MySQL?

  4. Ta bort sista kommat inom while-slingan - PHP