2012-01-06 21 views
2

dbo.SectionInのテーブル値パラメータ@sectionを持つSProcを持っています。このparamはSProc全体で使用されており、レコードからいくつかのレコードを削除したいと思いますが、もちろんReadOnly仕様です。テーブル値パラメータ読み取り専用ワークワーカー

The table-valued parameter "@sections" is READONLY and cannot be modified. 

私の計画は、その内容をテーブル変数にコピーして代わりに使用することです。

DECLARE @sectionDups as dbo.SectionIn 
    INSERT INTO @sectionDups 
    SELECT * 
    FROM @sections 

私の質問は、これはクエリプランのいずれかのパフォーマンスヒットが発生している場合はありません、最初の場所でのReadOnly要件の背後にある理由は何ですか?

答えて

0

があるため、テーブルをコピーのパフォーマンスヒットがあるでしょう、のparamテーブル内の複数の行は、より多くのそれはパフォーマンスが痛いが、それは読み取り専用の唯一の理由私の知る限り、SP

の合計実行に無視することができる場合tvpは - SQLサーバーでは非常に新鮮な機能であり、読み書きはまだ作成中ですので、患者は

0

です.TVPテーブル変数を新しいテーブル変数にコピーしないでください。あなたが行を除外したい場合は、次のいずれかを実行します。

  1. は不要な行をフィルタリングするWHERE句を使用します。

    または

  2. #シングル)ローカルの一時テーブルを作成し、それにTVPデータをコピーします。そうすることはWHERE句を使用して要求するように思われるので、これは外の値の多くを持っていませんが:テーブル変数とは対照的に、一時テーブル用

    • より良い統計を(ただし、文レベルOPTION (RECOMPILE)を使用していることを解決します1)TVP
の列にすでに値を変更する
  • 能力を追加する
  • 能力
  • 関連する問題