Временните таблици са голямо НЕ в SQL Server.
- Те провокират повторно компилиране на плана за заявка, което е скъпо.
- Създаването и премахването на таблицата също са скъпи операции, които добавяте към вашия процес.
- Ако има голямо количество данни, отиващи към временните данни, вашите операции ще бъдат бавни поради липсата на индекси. МОЖЕТЕ да създавате индекси на временни таблици. Но никога няма да препоръчам временна таблица за нещо с голямо количество записи.
Вашият друг подход:Създаването и след това премахването на обикновени таблици просто създава същите допълнителни разходи.
Друг подход:Използване на съществуващи таблици, увеличаване на редовете с допълнителна колона, за да се разграничи кои редове се отнасят за всеки потребител/сесия, може да се използва. Премахва тежестта за създаване/изтриване на таблиците, но тогава ще трябва да сте параноични с кода, който генерира стойността за разграничаване на редовете И ще трябва да разработите начин за поддържане на таблицата за онези случаи, когато сесията е приключила преждевременно и има остатъци (редове, които не са били премахнати в края на обработката).
Препоръчвам ви да преосмислите стратегията си за обработка. Някои алтернативи са толкова лесни, колкото използването на корелирани заявки, производни таблици или променливи на таблици. Разгледайте:http://www.sql-server- performance.com/articles/per/temp_tables_vs_variables_p1.aspx
Редактиране: Подходът за създаване и премахване на обикновени таблици и подходът за повторно използване на обикновена таблица, обогатена с допълнително поле:И двата ще генерират повторни компилации на плана на заявката, тъй като количеството променени данни ще задейства преоценката на статистическите данни на таблицата. Отново, най-добрият ви подход е да намерите алтернативни начини за обработка на вашите данни.