Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jaka jest szybkość porównawcza tabel tymczasowych z tabelami fizycznymi w SQL?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyj COLUMNPROPERTY(), aby zwrócić informacje o kolumnie lub parametrze w SQL Server

  2. Zapytanie SQL Server do grupowania danych sekwencyjnych dat

  3. Jak naprawić „wyrażenie EXECUTE nie powiodło się, ponieważ jego klauzula WITH RESULT SETS określiła 1 zestaw wyników…” w programie SQL Server

  4. Zapytanie SQL, aby uzyskać najnowszą cenę

  5. Zrozumienie SQL Server zawsze szyfrowane