Tabele tymczasowe to duże NIE w SQL Server.
- Prowokują ponowne kompilacje planów zapytań, co jest kosztowne.
- Tworzenie i usuwanie tabeli to również kosztowne operacje, które dodajesz do swojego procesu.
- Jeśli duża ilość danych trafia do danych tymczasowych, Twoje operacje będą spowolnione z powodu braku indeksów. Możesz tworzyć indeksy na tabelach tymczasowych. Ale nigdy nie polecę tymczasowej tabeli dla niczego z dużą ilością rekordów.
Twoje inne podejście:tworzenie, a następnie usuwanie zwykłych tabel po prostu tworzy ten sam narzut.
Inne podejście:Korzystając z istniejących tabel, można zastosować rozszerzenie wierszy o dodatkową kolumnę, aby rozróżnić, które wiersze odnoszą się do każdego użytkownika/sesji. Usuwa ciężar tworzenia/usuwania tabel, ale wtedy będziesz musiał popaść w paranoję z kodem, który generuje wartość, aby rozróżnić wiersze ORAZ będziesz musiał opracować sposób na utrzymanie tabeli w przypadkach, gdy sesja zakończyła się przedwcześnie i są resztki (wiersze, które nie zostały usunięte pod koniec przetwarzania).
Polecam przemyśleć swoją strategię przetwarzania. Niektóre alternatywy są tak proste, jak użycie skorelowanych zapytań, tabel pochodnych lub zmiennych tabel. Spójrz na:http://www.sql-server- performance.com/articles/per/temp_tables_vs_variables_p1.aspx
Edytuj: Podejście polegające na tworzeniu i usuwaniu zwykłych tabel oraz podejściu do ponownego użycia zwykłej tabeli rozszerzonej o dodatkowe pole:Oba będą generować ponowną kompilację planu zapytania, ponieważ ilość zmienionych danych spowoduje ponowną ocenę statystyk tabel. Ponownie, najlepszym podejściem jest znalezienie alternatywnych sposobów przetwarzania danych.