Dela via


Tabeller

gäller för: SQL Server 2016 (13.x) och senare Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Tabeller är databasobjekt som innehåller alla data i en databas. I tabeller ordnas data logiskt i ett rad- och kolumnformat som liknar ett kalkylblad. Varje rad representerar en unik post och varje kolumn representerar ett fält i posten. Till exempel kan en tabell som innehåller anställdas data för ett företag innehålla en rad för varje anställd och kolumner som representerar information om anställda, till exempel anställds nummer, namn, adress, befattning och hemtelefonnummer.

  • Antalet tabeller i en databas begränsas endast av antalet objekt som tillåts i en databas (2 147 483 647). En användardefinierad standardtabell kan ha upp till 1 024 kolumner. Antalet rader i tabellen begränsas endast av serverns lagringskapacitet.

  • Du kan tilldela egenskaper till tabellen och till varje kolumn i tabellen för att styra de data som tillåts och andra egenskaper. Du kan till exempel skapa begränsningar för en kolumn för att inte tillåta null-värden eller ange ett standardvärde om ett värde inte har angetts, eller så kan du tilldela en nyckelbegränsning för tabellen som framtvingar unikhet eller definierar en relation mellan tabeller.

  • Data i tabellen kan komprimeras antingen efter rad eller sida. Datakomprimering kan göra det möjligt att lagra fler rader på en sida. För mer information, se Datakomprimering.

Typer av tabeller

Förutom standardrollen för grundläggande användardefinierade tabeller tillhandahåller SQL Server följande typer av tabeller som har särskilda syften i en databas.

Partitionerade tabeller

Partitionerade tabeller är tabeller vars data är horisontellt indelade i enheter som kan spridas över mer än en filgrupp i en databas. Partitionering gör stora tabeller eller index mer hanterbara genom att du kan komma åt eller hantera delmängder av data snabbt och effektivt, samtidigt som integriteten för den övergripande samlingen bibehålls. SOM standard stöder SQL Server upp till 15 000 partitioner. Mer information finns i partitionerade tabeller och index.

Temporära tabeller

Temporära tabeller lagras i tempdb. Det finns två typer av temporära tabeller: lokala och globala. De skiljer sig från varandra i sina namn, deras synlighet och deras tillgänglighet. Lokala temporära tabeller har ett enda taltecken (#) som det första tecknet i deras namn. De är endast synliga för den aktuella anslutningen för användaren och tas bort när användaren kopplar från SQL Server-instansen. Globala temporära tabeller har två taltecken (##) som de första tecknen i deras namn. De är synliga för alla användare när de har skapats och tas bort när alla användare som refererar till tabellen kopplar från SQL Server-instansen.

Minskade rekompileringar för arbetsbelastningar med hjälp av temporära tabeller över flera kontexter

SQL Server 2019 (15.x) under alla databaskompatibilitetsnivåer minskar omkompileringarna för arbetsbelastningar med hjälp av temporära tabeller i flera omfång. Den här funktionen är också aktiverad i Azure SQL Database under databaskompatibilitetsnivå 150 för alla distributionsmodeller. Innan denna funktion fanns, när man refererade till en tillfällig tabell med en DML-instruktion (SELECT, INSERT, UPDATE, DELETE), och den tillfälliga tabellen skapades av en yttre omfångspartit, skulle detta resultera i att DML-instruktionen kompilerades om varje gång den kördes. Med den här förbättringen utför SQL Server ytterligare enkla kontroller för att undvika onödiga omkompileringar:

  • Kontrollera om modulen med yttre omfång som används för att skapa den tillfälliga tabellen vid kompileringstiden är samma som används för efterföljande körningar.
  • Håll reda på eventuella ändringar i datadefinitionsspråket (DDL) som gjordes vid den första kompileringen och jämför dem med DDL-åtgärder för efterföljande körningar.

Slutresultatet är en minskning av onödiga omkompileringar och CPU-overhead.

Systemtabeller

SQL Server lagrar data som definierar konfigurationen av servern och alla dess tabeller i en särskild uppsättning tabeller som kallas systemtabeller. Användare kan inte fråga eller uppdatera systemtabellerna direkt. Informationen i systemtabellerna görs tillgänglig via systemvyerna. Mer information finns i systemvyer (Transact-SQL).

Breda tabeller

Breda tabeller använder glesa kolumner för att öka antalet kolumner som en tabell kan ha till 30 000. Glesa kolumner är vanliga kolumner som har en optimerad lagring för null-värden. Glesa kolumner minskar utrymmeskraven för null-värden till priset av mer arbete för att hämta icke-nollvärden. En bred tabell har definierat en kolumnuppsättning, som är en otypad XML-representation som kombinerar alla glesa kolumner i en tabell till strukturerade utdata. Antalet index och statistik ökar också till 1 000 respektive 30 000. Den maximala storleken på en bred tabellrad är 8 019 byte. Därför bör de flesta data i en viss rad vara NULL. Det maximala antalet icke-sparse-kolumner plus beräknade kolumner i en bred tabell förblir 1 024.

Breda tabeller har följande prestandakonsekvenser.

  • Breda tabeller kan öka kostnaden för att underhålla index i tabellen. Vi rekommenderar att antalet index i en bred tabell begränsas till de index som krävs av affärslogik. I takt med att antalet index ökar gör även DML-kompileringstiden och minnesbehovet det. Icke-grupperade index bör vara filtrerade index som tillämpas på dataunderuppsättningar. Mer information finns i Skapa filtrerade index.

  • Program kan dynamiskt lägga till och ta bort kolumner från breda tabeller. När kolumner läggs till eller tas bort ogiltigförklaras även kompilerade frågeplaner. Vi rekommenderar att du utformar ett program så att det matchar den beräknade arbetsbelastningen så att schemaändringarna minimeras.

  • När data läggs till och tas bort från en bred tabell kan prestanda påverkas. Program måste utformas för den beräknade arbetsbelastningen så att ändringar i tabelldata minimeras.

  • Begränsa körningen av DML-instruktioner i en bred tabell som uppdaterar flera rader med en klustringsnyckel. Dessa instruktioner kan kräva betydande minnesresurser för att kompilera och köra.

  • Byta partitioner på breda tabeller kan ta tid och kan kräva stora mängder minne för att bearbeta. Prestanda- och minneskraven är proportionella mot det totala antalet kolumner i både käll- och målpartitionerna.

  • Uppdateringsmarkörer som uppdaterar specifika kolumner i en bred tabell bör uttryckligen visa kolumnerna i FOR UPDATE-satsen. Detta hjälper dig att optimera prestanda när du använder markörer.

Vanliga tabelluppgifter

Följande tabell innehåller länkar till vanliga uppgifter som är associerade med att skapa eller ändra en tabell.

Tabelluppgifter Ämne
Beskriver hur du skapar en tabell. Skapa tabeller (databasmotor)
Beskriver hur du tar bort en tabell. Ta bort tabeller (databasmotor)
Beskriver hur du skapar en ny tabell som innehåller vissa eller alla kolumner i en befintlig tabell. duplicerade tabeller
Beskriver hur du byter namn på en tabell. Byt namn på tabeller (databasmotor)
Beskriver hur du visar tabellens egenskaper. Visa tabelldefinitionen
Beskriver hur du avgör om andra objekt, till exempel en vy eller lagrad procedur, är beroende av en tabell. Visa beroenden för en tabell

Följande tabell innehåller länkar till vanliga uppgifter som är associerade med att skapa eller ändra kolumner i en tabell.

Kolumnuppgifter Ämne
Beskriver hur du lägger till kolumner i en befintlig tabell. Lägga till kolumner i en tabell (databasmotor)
Beskriver hur du tar bort kolumner från en tabell. Ta bort kolumner från en tabell
Beskriver hur du ändrar namnet på en kolumn. byt namn på kolumner (databasmotor)
Beskriver hur du kopierar kolumner från en tabell till en annan, kopierar antingen bara kolumndefinitionen eller definitionen och data. Kopiera kolumner från en tabell till en annan (databasmotor)
Beskriver hur du ändrar en kolumndefinition genom att ändra datatyp eller annan egenskap. Ändra kolumner (databasmotor)
Beskriver hur du ändrar i vilken ordning kolumnerna visas. ändra kolumnordning i en tabell
Beskriver hur du skapar en beräknad kolumn i en tabell. Ange beräknade kolumner i en tabell
Beskriver hur du anger ett standardvärde för en kolumn. Det här värdet används om inget annat värde anges. Ange standardvärden för kolumner

Se även

primär- och främmande nyckelbegränsningarunika begränsningar och check-begränsningar