本日朝までのリリース予定のところ、多少いんちきをしつつも昨夜(今朝?)3時に終了。つかれたー。お仕事のネタはいっぱい仕入れたとはいえ、本当にこの状況下でよくもまぁ コミケ行 を許されたもんだ。
それにしてもボトルネック部分を洗い出してみたら、随分と色々あった。8:2法則通り、コード量にしたら大した分量ではないけれど、そこを弄っただけでぐっと高速化された。
データ量に対して指数時間な処理がもうどうしようもなくなってたので、重複データ発生の虞はあるけれどそこは運用でカバーするとして線形時間に無理矢理落とした。実行時間のほとんどをDBMSが食ってるから、明らかにその辺の処理がまずいんだろうなーと思って、実行計画を見ながらSQLをチューニングしたら100倍くらい違った。やっぱりSQLの構築は人任せにしないで私がDB管理者役もやるべきなのかな。
あとは、今回、初回構築のために手で動かした作業を自動化するのにスクリプトも書くのと、実行計画と相談しながらインデックスの付け方をもう少し改善するのと。