雨のち曇り

Emacsの設定を変更して

emacsの文字化け問題に対処した。原因は、.emacs.d/init.elで文字コードを設定していたこと。初期設定ファイルで設定せず、素直に環境変数LANGに従えばよい。org-modeで日付を入力できなくて困っていたが、これでWindowsからもLinuxからも更新できるぜー

同僚のSQLを修正して

SQLを書くなら、EXISTSは何がなんでもマスターするべき。親子関係にあるテーブルの少なくともひとつの子が/すべての子が条件を満たすときに親を○○で更新するとかよくあると思う。EXISTSを使えない人は条件を満たす子をカウントしたりして読みにくいったらありゃしない。勉強せよ!!

例えばこういうふうに書き換えられる。

-- 古
updateset
  結果 = 'OK'
where
  キー in (
    select
      キー
    from (
      select
        親.キー
        , sum(case 子.条件
            when '満たす' then 1
        end) as 条件を満たす子の数
      from
        親
        join 子
          on 親.キー = 子.キー
      group by
        親.キー
    )
    where
      1 <= 条件を満たす子の数
  )
-- 新
updateset
  結果 = 'OK'
where
  exists (
    select
      1
    fromwhere
      親.キー = 子.キー
      and 子.条件 = '満たす'
  )

どっちが読みやすいかは一目瞭然。上みたいなSQLを書く人が「400万件だからそんなに遅くならない」とか適当なことを言うから困る。実行計画は見たのか実行計画は。