0時に寝て6時半に起きた。

映像研には手を出すな

お奨めされたので 映像研には手を出すな を見始めた。あまり現実と空想が入り交じる展開が新鮮と言えば新鮮だし、ストーリーがわかりにくい気もしてもやもやする。浅草氏も「アニメは設定が命」と言っているし、この設定はどうなの?とか思いながら、それでもみているんだからいいんだろうって感じ?最初はごちゃごちゃしててわかりにくい感じがしたんだけど、見続けていると徐々に独特の世界観に慣れてきたのか、ところどころおもしろいなと思うようにはなってきた。また全話みてから総括する。

サブクエリで group by

お仕事でたまたま触っているところの sql をみたら次のようなものがあった。サブクエリで group by 句を使っている。仮に mytable_detail が1億件ぐらいあったらこんな sql 動くわけがない。データが溜まるごとに遅くなっていって、しきい値を超えると急激にパフォーマンスが悪化する時限爆弾みたいな sql だと思う。お手伝い先は or mapper を使っていないので開発者が sql を手で書いているにも関わらず、こんな sql が実運用されてしまうような開発体制には大きな課題があるなぁとか考え込んでしまった。

SELECT mytable.*, t.is_some
FROM mytable
LEFT JOIN LATERAL (
    SELECT mytable_id, bool_or(mytable_detail.is_some) as is_some
    FROM mytable_detail
    WHERE mytable_detail.mytable_id = mytable.mytable_id
    GROUP BY mytable_detail.mytable_id
) as t on t.mytable_id = mytable.mytable_id
WHERE mytable.foreign_key_id = :foreignKeyId
ORDER BY mytable.mytable_id;

以前、お手伝いしていた会社の CTO が社内の開発者のデータの取り扱いの指針として書いた記事が次になる。社内では 最低 1000万件のデータがあると思ってコードを書けと強く啓蒙していた。いまどきのデータ量として1000万件というのはよい指標だと思う。