PostgreSQL、FULL VACUUMとREINDEXしないと遅くなってきちゃうの辛いね。
PostgreSQLのバキュームの話、補足しておくと、最近のバージョンだとデータの方は更新時に断片化しにくい仕組みが入っているんだけど、インデックスは相変わらずそれがないので、REINDEXは掛けておいた方が良いんだけどテーブルの読み書きがロックされるので、CREATE INDEX CONCURRENTLYで、同じ定義のインデックスを別名で作ってすげ替えるというテクニックがあります。
思考の /dev/null