08/08/13 22:41:32
>>518
管理タブの「状態」が重いのが諸悪の根源だな。
select count(*) from dat;
select sum(disksize) from dat;
select count(*) from dat where lastpublish > ?;
の3文を呼び出してるみたいだけど、上2つはインデックス使えてない/使えないから
せめて
select count(*),
sum(disksize),
sum(case when lastpublish > ? then 1 else 0 end)
from dat;
の1文にして欲しい。
ちなみに上の3文のうち、一番上は
select count(*) from dat where lastpublish > 0;
にするだけでだいぶ速くなる。
一番下はもともとそこそこ速い。
問題なのはsum(disksize)だけど、
disksizeにインデックス張ってもここでしか使わないだろうし、
本当はdisksizeの合計をdatテーブルの外で管理しといたほうが
いいんだろうなあ。
(sum_disksizeテーブル作ってトリガーで更新しとくとか。)