途中で終了。
低速求頼については,ほぼ _dg と _dg_oln の結合部分で生じていることを突き止めた。
どうしても気になりあれこれ試行錯誤していると,WHERE 句 に書いていたフラグ(b_del,b_bg_his)の条件を count() 内に移した(OR NULL 付き)だけで,明らかに速くなることに気付いた。その差はおよそ20倍。
いまいち理由は把握しきれていないが,EXPLAIN ANALYZE では,WHERE 句にフラグ列を含めるとマージ結合になりかなり無駄な処理が入っていることが分かるが,count() に含めるとネステッドループ結合になり無駄なく索引が使われている。
WHERE 句のフラグに索引を張っても ON 句に移しても変化が無かった。
もう少ししっかり理解して最適化しなければならないが,良い一時凌ぎにはなるだろう。
ここで,昨年,_dg_oln に n_fg と n_bg を加えていたことを思い出した。すっかり忘れていた。これも活かせば,速度上の問題はほぼ解消しそうだ。