sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er den komparative hastighed af midlertidige tabeller til fysiske tabeller i SQL?

Midlertidige tabeller er et stort NEJ i SQL Server.

  • De fremkalder genkompilering af forespørgselsplaner, hvilket er dyrt.
  • Oprettelse og sletning af tabellen er også bekostelige operationer, som du tilføjer til din proces.
  • Hvis der er en stor mængde data, der går til de midlertidige data, vil dine operationer være langsom på grund af manglen på indekser. Du KAN oprette indekser på midlertidige tabeller. Men jeg vil aldrig anbefale et midlertidigt bord til noget med en stor mængde poster.

Din anden tilgang:At oprette og derefter droppe almindelige tabeller skaber bare den samme overhead.

En anden tilgang:Brug af eksisterende tabeller, udvidelse af rækkerne med en ekstra kolonne for at skelne mellem, hvilke rækker der vedrører hver bruger/session, der kan bruges. Fjerner byrden for at oprette/slippe tabellerne, men så bliver du nødt til at være paranoid med koden, der genererer værdien for at differentiere rækkerne, OG du bliver nødt til at udvikle en måde at vedligeholde tabellen i de tilfælde, hvor en session sluttede for tidligt og der er rester (rækker, der ikke blev fjernet ved slutningen af ​​behandlingen).

Jeg anbefaler dig at genoverveje din behandlingsstrategi. Nogle alternativer er lige så nemme som at bruge korrelerede forespørgsler, afledte tabeller eller tabelvariabler. Tag et kig på:http://www.sql-server- performance.com/articles/per/temp_tables_vs_variables_p1.aspx

Rediger: Fremgangsmåden med at oprette og slette almindelige tabeller og tilgangen til at genbruge en almindelig tabel med et ekstra felt:Begge vil generere forespørgselsplangenkompileringer, fordi den ændrede mængde data vil udløse reevaluering af tabelstatistikker. Igen, din bedste tilgang er at finde alternative måder at behandle dine data på.



  1. Hvorfor er den nuværende Oracle ODAC-forbindelse ikke synlig i VS 2013?

  2. Bedst at bruge * når du kalder mange felter i mysql?

  3. Hvorfor kan PostgreSQL ikke gøre dette simple FULD JOIN?

  4. c# mysql AddWithValue unicode