6

私のバックグラウンド プロセスは、データの一括更新/挿入です。後で使用するために一時テーブルにデータを保存する必要があります。私は5つの一時テーブルを持っています。一時テーブル (CREATE TABLE #T) を使用すると 2 ~ 3 秒かかりますが、テーブル変数 (DECLARE @T TABLE) を使用すると 90 秒以上かかります。サンプルの一時テーブルを次に示します。

CREATE TABLE #TempAttributes
(
    AID int
    ,PID int
    ,ATypeValue nvarchar(MAX)
    ,ATypeKey nvarchar(MAX)
    ,PLanguageID int
);

テーブル変数が非常に遅いのはなぜですか?

4

1 に答える 1

1

テーブル変数の挿入が並列プランをサポートしていないためだと思います。

並列クエリ処理は、MsSql に実装されている並列クエリの最適化のプロセスであり、一時テーブルはその恩恵を受けますが、テーブル変数は恩恵を受けません。

これが、大規模なデータ セットにテーブル変数を使用しない主な理由の 1 つです (スコープが問題にならない場合)。

詳しくはこちらをご覧ください。

于 2014-01-23T11:17:48.330 に答える