3

パフォーマンスに関して、これらのUPDATEステートメントの1つを他のステートメントよりも使用する理由はありますか?

 UPDATE myTable
 SET    fieldx = 1
 FROM   myTable AS mt
      , myView AS mv
 WHERE  mt.id = mv.id


 UPDATE myTable
 SET    fieldx = 1
 WHERE  id IN ( SELECT id
                     FROM   myView )
4

2 に答える 2

5

それらはおそらく同じ実行計画で出てくるでしょう、つまり違いはありません。確認するには、[実行プランを含める]オプションをオンにしてSSMSでそれぞれを試してください。

実際、私が求めるのは次のとおりです。

UPDATE mt
SET mt.fieldx = 1
FROM myTable mt
    JOIN myView mv ON mt.ID = mv.ID

私はこの構文がとても好きです。ただし、それも同じ実行計画で出てきます。

これを実証するために、UPDATEステートメントの各バリアントを使用してテストを実行しました。以下の実行プランが示すように、それらはすべて同じように出力されました-すべて同じように実行されます:
alt text http://img707.imageshack.us/img707/7801/60422461.png


代替テキストhttp://img683.imageshack.us/img683/7874/41210682.png


代替テキストhttp://img708.imageshack.us/img708/5020/20506532.png

于 2010-02-08T19:45:21.727 に答える
0

これはパフォーマンスを表すものではありませんが、コードの基本構造を変更せずに簡単に検証できるように、最初の例の方が好きです。コメントのどこに何を入れたかに注意してください。

UPDATE myTable 
SET    fieldx = 1
--SELECT *
FROM   myTable AS mt 
      , myView AS mv 
WHERE  mt.id = mv.id
于 2010-02-08T19:58:14.043 に答える