sql >> Databáze >  >> RDS >> Sqlserver

Jaká je rychlost porovnání dočasných tabulek s fyzickými tabulkami v SQL?

Dočasné tabulky jsou na SQL Serveru velkým NE.

  • Vyvolávají rekompilaci plánu dotazů, což je nákladné.
  • Vytvoření a odstranění tabulky jsou také nákladné operace, které přidáváte do svého procesu.
  • Pokud do dočasných dat směřuje velké množství dat, vaše operace budou pomalé kvůli nedostatku indexů. Můžete vytvářet indexy na dočasných tabulkách. Ale nikdy nedoporučuji dočasnou tabulku pro nic s velkým množstvím záznamů.

Váš další přístup:Vytvoření a následné zrušení běžných tabulek vytváří stejnou režii.

Jiný přístup:Použití existujících tabulek, rozšíření řádků o další sloupec, aby bylo možné rozlišit, které řádky se týkají každého uživatele/relace. Odstraňuje zátěž při vytváření/rušení tabulek, ale pak budete muset být paranoidní s kódem, který generuje hodnotu pro odlišení řádků, A budete muset vyvinout způsob, jak udržovat tabulku pro případy, kdy relace skončila předčasně. a jsou zde zbytky (řádky, které nebyly na konci zpracování odstraněny).

Doporučuji přehodnotit strategii zpracování. Některé alternativy jsou stejně snadné jako použití korelovaných dotazů, odvozených tabulek nebo proměnných tabulek. Podívejte se na:http://www.sql-server- performance.com/articles/per/temp_tables_vs_variables_p1.aspx

Upravit: Postup vytváření a rušení běžných tabulek a postup opětovného použití běžné tabulky rozšířený o další pole:Oba budou generovat rekompilace plánu dotazů, protože množství změněných dat spustí přehodnocení statistik tabulky. Opět platí, že nejlepším přístupem je najít alternativní způsoby zpracování dat.



  1. Porovnání MySQL s hodnotou null

  2. Jak znovu zvýšit výjimku pl/sql v bloku zpracování výjimek?

  3. Alternativy PGTune - Konfigurace ClusterControl PostgreSQL

  4. Jak zjistit, zda je dotaz MySQL platný?