2

私は今、以下に示す動作に従っているように見えるsprocsを見ています。

DECLARE @tablevar TABLE
(
    FIELD1   int,
    FIELD2   int,
    FIELD3   varchar(50),
    -- etc
)

INSERT INTO @tablevar
(
    FIELD1,
    FIELD2,
    FIELD3,
    -- etc
)
SELECT FIELD1, FIELD2, FIELD3, -- etc
FROM
TableA Inner Join TableB on TableA.Foo = TableB.Foo
Inner Join TableC on TableB.Bar = TableC.Bar
-- Where, Order By, etc.

Select FIELD1, FIELD2, FIELD3, -- etc
FROM @tablevar

プレーンなselectステートメントを使用してテーブル変数をスキップするのではなく、このアプローチを使用することには利点がありますか?

4

2 に答える 2

7

投稿されたとおりに使用することを計画している場合(データを入力してから結果を選択する)、何も得られません。SQL Serverに負担をかけているだけで、CPUとメモリの使用量が増えています。

テーブル変数をさらに使用することを計画している場合、答えは変わります。これは、テーブル変数の使用方法によって異なります。少量のデータを保持する場合は、後続のステートメントで使用する方が効率的です。複数回使用する予定で、初期の人口が高い場合は、より効率的である可能性があります。

それぞれの状況は異なり、それが違いを生むかどうかを確認するためにテストする必要があるので、私は多分言い続けます。

于 2010-08-10T20:57:10.877 に答える
2

テーブルにデータを入力してそこから選択するだけの場合、これを実行してもメリットはありません。

于 2010-08-10T20:55:42.863 に答える