TOASTに気をつけろ

まだハマってないけど、マニュアルに書かれてたことなので、メモ。
いわく、大きなジオメトリデータを持つ小さなテーブルの場合、クエリプランナーは小さなテーブルに引きずられて、シーケンシャルスキャンをやってしまい、GiSTインデクスを無視する場合があるらしい。
回避策は、無理にシーケンシャルスキャンを禁止させるか、バウンダリボックスのキャッシュをつかさどるカラムを作って、そちらを参照させるのだそうな。
マニュアルにはバウンダリボックスのキャッシュではシンクロさせるのに、トリガを使うか、アプリケーションレベルで同期をとれ、とあります。思うに、アレげな実装をする人もいるかも知れないので、後者をやるならトランザクションを忘れちゃダメよ、と書いておくべきではないかという気もしないでもないです。