一連の地球座標 (緯度/経度) と関連する半径を含むテーブルがあります。また、これらの円と一致させたいポイントの束を含むテーブルもあり、その逆も同様です。どちらも動的です。つまり、いつでも新しい円または新しい点を追加または削除できます。いずれかが追加されたら、新しい円または点を、適用可能なすべての点または円とそれぞれ一致させたいと考えています。
私は現在、座標が与えられた地球上の 2 点間の距離を見つけるための C 関数を含む PostgreSQL モジュールを持っていますが、うまくいくようです。問題はスケーラビリティです。その機能を実行するために、関数は現在、テーブル全体をスキャンし、各行に対して三角関数の計算を行う必要があります。どちらのテーブルも緯度と経度でインデックスが作成されていますが、関数はそれらを使用できません。2 つのことが一致するかどうかを知る前に、それが実行されなければなりません。新しい情報が 1 秒間に数回投稿されることもあり、すべてのポイントを毎回チェックするのは非常に面倒になり始めています。
PostgreSQL の幾何学的型を見てきましたが、それらは球上の点よりも直角座標に適しているようです。
このデータを調整/最適化/フィルタリング/事前計算して、マッチングを高速化し、負荷を軽減するにはどうすればよいですか?