Pages

2015/02/02

UPDATE で CASE 文

SQL Server で、UPDATE 時の更新値を CASE で分岐させたい場合。
-- CASE 文は他の書き方でも良い。
UPDATE Hoge
SET
 Point = 
  CASE WHEN
   (NowPoint - @GetPoint) >= 0
  THEN
   NowPoint - @GetPoint
  ELSE
   0
  END
WHERE Cd = @Cd
簡単な更新であればこの通りでも良いと思うのだが、大量のデータをこうやって分岐させながら更新するのは経験上パフォーマンスが悪いように思う。
テーブル設計にもよるが、条件を分け複数回の UPDATE の方が速かったりすることもあるので、書けるからといって何でもこういう書き方で実装ししてしまうのは危険だ。

Related Posts Plugin for WordPress, Blogger...