sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är den jämförande hastigheten för temporära tabeller med fysiska tabeller i SQL?

Tillfälliga tabeller är ett stort NEJ i SQL Server.

  • De provocerar om kompilering av frågeplaner vilket är kostsamt.
  • Att skapa och ta bort tabellen är också kostsamma operationer som du lägger till i din process.
  • Om det finns en stor mängd data som går till den tillfälliga datan kommer din verksamhet att gå långsamt på grund av bristen på index. Du KAN skapa index på temporära tabeller. Men jag kommer aldrig att rekommendera ett tillfälligt bord för något med en stor mängd poster.

Ditt andra tillvägagångssätt:Att skapa och sedan släppa vanliga tabeller skapar bara samma overhead.

Ett annat tillvägagångssätt:Använd befintliga tabeller, utöka raderna med en extra kolumn för att skilja vilka rader som hör till varje användare/session som kan användas. Tar bort bördan att skapa/släppa tabellerna men då måste du vara paranoid med koden som genererar värdet för att skilja raderna OCH du måste utveckla ett sätt att underhålla tabellen för de fall där en session avslutades för tidigt och det finns rester (rader som inte togs bort i slutet av bearbetningen).

Jag rekommenderar dig att ompröva din bearbetningsstrategi. Vissa alternativ är lika enkla som att använda korrelerade frågor, härledda tabeller eller tabellvariabler. Ta en titt på:http://www.sql-server- performance.com/articles/per/temp_tables_vs_variables_p1.aspx

Redigera: Tillvägagångssättet att skapa och släppa vanliga tabeller och tillvägagångssättet att återanvända en vanlig tabell förstärkt med ett extra fält:Båda kommer att generera omkompilering av frågeplan eftersom mängden data som ändras kommer att utlösa omvärderingen av tabellstatistiken. Återigen, ditt bästa tillvägagångssätt är att hitta alternativa sätt att bearbeta dina data.



  1. Lista tabeller och kolumner i ett påstående

  2. Hur skapar man automatisk inkrementering / SERIELL ID-kolumn på DBeaver med PostgreSQL?

  3. Fel:Postgres-databasimport i docker-container

  4. MySQL sortera efter någon lista