アプリのユーザーが検索できるようにする必要がある場所のテーブルがあります。基本的に「自分から x マイル以内の場所」
私は次のようなクエリを使用しています:
select * from job_locations
where earth_box(ll_to_earth(51.5, -0.085), 5000) @> ll_to_earth(latitude, longitude)
and earth_distance(ll_to_earth(51.5, -0.085), ll_to_earth(latitude, longitude)) < 5000;
そして、このようなインデックス:
CREATE INDEX job_locations_lat_lng on job_locations USING gist(ll_to_earth(latitude, longitude));
ただし、これはマルチテナント システムであり、すべてのテーブルに「tenant_id」フィールドがあり、常にそれによってフィルタリングします。したがって、理想的には、インデックスに tenant_id と ll_to_earth(lat, lng) の両方を含めることができます。これにより、おそらく検索がはるかに高速になるはずです。
これは可能ですか?そのインデックスを作成するにはどうすればよいですか?
ありがとう!
ダニエル