リレーショナルデータベースの集計処理実装でインデックスを活用するようにした

データベースの勉強に、かわいいデータベースができました。
http://d.hatena.ne.jp/nowokay/20120817#1345197962


で、集計処理とインデックスを実装したのだけど、ちょっとインデックスを効率よく使ってなかったので、処理を修正しました。
Mapを使ったインデックスをあらわすMapIndexに、groupByの処理を記述しています。これで、ツリーインデックスだけじゃなくハッシュインデックスでも集計が効率よくなりました。


実際、インデックスを使わないときには次のような実行時間だったものが

aggregation without index:1687ms

1/4くらいの速さになってます。

aggregation with index:394ms


修正前はこのような結果だったので、2/3くらいの処理時間に高速化されました。

aggregation with index:610ms


ということで、簡単に実装できるところは実装しちゃったので、次はどうしよう?


ソースはこれ
https://gist.github.com/3380142/58826329cba7d4e6a3a620547ae2333c24b2725c