ハッシュタグタイムラインの取得クエリが遅いのは、該当のハッシュタグが使われている件数が一定以上多い場合にwork_memを超えてしまい、Bitmap Index Scanした後にexactではなくlossyで処理されて、Bitmap Heap Scan のRecheckが走ってしまうため。
何を言っているかわからないと思うのでw、詳しい人が説明してくれてる記事をみて……。
https://taityo-diary.hatenablog.jp/entry/2018/07/07/071928
work_memはそうそう大きくできないので、frfrとかabyss_fun、theboss_techのような件数の多いタグに対応するのは難しい。
んで、私が今回とったアプローチは、通常は最後に行うページング用のパラメータを、事前にハッシュタグを抽出する際に適用して処理対象件数を減らすというもの。とりあえず200件だけ取得してあとは無視するようにしたので、取得した200件がロック対象だった場合にタイムラインそれ以上遡れないという問題がある。
まぁ何にしても快適にはなった。
ただ、ちょっとこれを公式にぶち込むのはあんまりなので、もっと洗練させたい。