sql >> データベース >  >> RDS >> Sqlserver

SQL の一時テーブルと物理テーブルの比較速度は?

    一時テーブルは、SQL Server では大きな問題です。

    • コストのかかるクエリ プランの再コンパイルを引き起こします。
    • テーブルの作成と削除も、プロセスに追加するコストのかかる操作です。
    • 大量のデータが一時データに送られると、インデックスが不足して操作が遅くなります。一時テーブルにインデックスを作成できます。ただし、大量のレコードを扱う場合は一時テーブルをお勧めしません。

    他のアプローチ:通常のテーブルを作成してから削除すると、同じオーバーヘッドが発生します。

    別のアプローチ:既存のテーブルを使用し、追加の列で行を拡張して、各ユーザー/セッションに関連する行を区別することができます。テーブルを作成/削除する負担を取り除きますが、行を区別するために値を生成するコードに偏執的である必要があり、セッションが途中で終了した場合に備えてテーブルを維持する方法を開発する必要があります残り物 (処理の最後に削除されなかった行) があります。

    処理戦略を再考することをお勧めします。一部の代替手段は、相関クエリ、派生テーブル、またはテーブル変数を使用するのと同じくらい簡単です。以下をご覧ください:http://www.sql-server- performance.com/articles/per/temp_tables_vs_variables_p1.aspx

    編集: 通常のテーブルを作成して削除する方法と、フィールドを追加して通常のテーブルを再利用する方法:どちらも、変更されたデータ量によってテーブル統計の再評価がトリガーされるため、クエリ プランの再コンパイルが生成されます。繰り返しますが、最善の方法は、データを処理する別の方法を見つけることです。



    1. Python 3.7、MySqlのホイールの構築に失敗しました-Python

    2. SQLiteの日付と時刻

    3. SQL Server(T-SQL)で既存のテーブルの圧縮を有効にする方法

    4. ユーザーの友達と友達の友達を取得するSQL