sql >> Database >  >> RDS >> Sqlserver

Wat is de relatieve snelheid van tijdelijke tabellen met fysieke tabellen in SQL?

Tijdelijke tabellen zijn een grote NEE in SQL Server.

  • Ze veroorzaken hercompilaties van queryplannen, wat kostbaar is.
  • Het maken en neerzetten van de tabel zijn ook kostbare handelingen die u aan uw proces toevoegt.
  • Als er een grote hoeveelheid gegevens naar de tijdelijke gegevens gaat, zullen uw bewerkingen traag verlopen door het ontbreken van indexen. U KUNT indexen maken op tijdelijke tabellen. Maar ik zal nooit een tijdelijke tabel aanbevelen voor iets met een grote hoeveelheid records.

Je andere benadering:het creëren en vervolgens neerzetten van gewone tabellen zorgt voor dezelfde overhead.

Een andere benadering:het gebruik van bestaande tabellen en het uitbreiden van de rijen met een extra kolom om te onderscheiden welke rijen bij elke gebruiker/sessie horen, kan worden gebruikt. Verwijdert de last om de tabellen te maken/verwijderen, maar dan moet u paranoïde zijn met de code die de waarde genereert om de rijen te differentiëren EN u zult een manier moeten ontwikkelen om de tabel te onderhouden voor die gevallen waarin een sessie voortijdig eindigde en er zijn restjes (rijen die aan het einde van de verwerking niet zijn verwijderd).

Ik raad je aan om je verwerkingsstrategie te heroverwegen. Sommige alternatieven zijn net zo eenvoudig als het gebruik van gecorreleerde query's, afgeleide tabellen of tabelvariabelen. Kijk eens op:http://www.sql-server- performance.com/articles/per/temp_tables_vs_variables_p1.aspx

Bewerken: De aanpak van het maken en verwijderen van gewone tabellen en de aanpak van het hergebruiken van een gewone tabel aangevuld met een extra veld:beide zullen hercompilaties van queryplannen genereren omdat de hoeveelheid gewijzigde gegevens de herevaluatie van tabelstatistieken zal activeren. Nogmaals, je kunt het beste alternatieve manieren vinden om je gegevens te verwerken.



  1. De duur van PostgreSQL lock-wachten beheren

  2. Hoe opgeslagen procedures uit te schrijven naar bestanden?

  3. Groepeer rijen met een tussenpoos van minder dan 15 dagen en wijs een min/max-datum toe

  4. MySQL unieke index door meerdere velden