Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Каква е сравнителната скорост на временните таблици спрямо физическите таблици в SQL?

Временните таблици са голямо НЕ в SQL Server.

  • Те провокират повторно компилиране на плана за заявка, което е скъпо.
  • Създаването и премахването на таблицата също са скъпи операции, които добавяте към вашия процес.
  • Ако има голямо количество данни, отиващи към временните данни, вашите операции ще бъдат бавни поради липсата на индекси. МОЖЕТЕ да създавате индекси на временни таблици. Но никога няма да препоръчам временна таблица за нещо с голямо количество записи.

Вашият друг подход:Създаването и след това премахването на обикновени таблици просто създава същите допълнителни разходи.

Друг подход:Използване на съществуващи таблици, увеличаване на редовете с допълнителна колона, за да се разграничи кои редове се отнасят за всеки потребител/сесия, може да се използва. Премахва тежестта за създаване/изтриване на таблиците, но тогава ще трябва да сте параноични с кода, който генерира стойността за разграничаване на редовете И ще трябва да разработите начин за поддържане на таблицата за онези случаи, когато сесията е приключила преждевременно и има остатъци (редове, които не са били премахнати в края на обработката).

Препоръчвам ви да преосмислите стратегията си за обработка. Някои алтернативи са толкова лесни, колкото използването на корелирани заявки, производни таблици или променливи на таблици. Разгледайте:http://www.sql-server- performance.com/articles/per/temp_tables_vs_variables_p1.aspx

Редактиране: Подходът за създаване и премахване на обикновени таблици и подходът за повторно използване на обикновена таблица, обогатена с допълнително поле:И двата ще генерират повторни компилации на плана на заявката, тъй като количеството променени данни ще задейства преоценката на статистическите данни на таблицата. Отново, най-добрият ви подход е да намерите алтернативни начини за обработка на вашите данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Премахнете всички знаци след първото празно пространство в SSRS 2005

  2. Време за изчакване на задачата на SQL Server Agent

  3. Как SQL Server обработва UPDATE транзакции?

  4. SSRS Премахване на колона от отчета

  5. Условието за филтриран индекс се игнорира от оптимизатора