Tabele tymczasowe są jak zwykłe tabele w większości cech, z wyjątkiem tego, że przechodzą do TempDB zamiast do bieżącej bazy danych i znikają po ograniczonym zakresie (w zależności od tego, czy są to tabele temp oparte na sesji, czy globalne. Ale wszystkie zmiany danych w tabelach Temp są zalogowany do dziennika transakcji, ze wszystkimi konsekwencjami wydajności, które to pociąga za sobą. Otoh, możesz również dodać tyle indeksów lub widoków, lub wyzwalaczy, lub cokolwiek innego, co chcesz, do tabeli tymczasowej dokładnie tak, jak do zwykłej tabeli.
Zmienne tabeli są rodzajem tabeli skrótów w pamięci (używają również tymczasowej bazy danych). Zmiany w nich nie są rejestrowane (poprawia to wydajność). Ale możesz uzyskać dla nich tylko jeden indeks (ponieważ indeksów nie można utworzyć po początkowej deklaracji deklaracji, jedyny indeks, który możesz utworzyć dla zmiennej tabeli, to ten, który może być zawarty w początkowej deklaracji zmiennej tabeli...
Declare @Tab Table (myKey integer Primary Key Not Null, data varchar(20))
Ze względu na te cechy, tabele tymczasowe są lepszym wyborem dla dużych tabel (szerokich i z wieloma wierszami) i/lub takich, które będą podlegać więcej niż jednemu wzorcowi dostępu w ciągu swojego życia, podczas gdy zmienne tabeli są najlepsze, gdy potrzebujesz bardzo wąskiej tabeli ( klucze tylko tabela lub klucz z tylko jedną kolumną danych), do którego zawsze będzie miał dostęp ten indeksowany klucz...