ポイントを見つけるためのバッファの作成は、(1)バッファを表すジオメトリを作成するオーバーヘッド、および(2)ポリゴン内のポイントの計算は、単純な距離の計算よりもはるかに効率が悪いため、間違いなくノーノーです。
あなたは明らかに(経度、緯度)データを扱っているので、それを距離10,000と同じ測定単位を持つ適切なデカルト座標系に変換する必要があります。その距離がメートル単位の場合は、テーブルからgeography
にポイントをキャストすることもできます。 (long、lat)座標で直接計算します。指定された距離内にあるポイントのみを識別したいので、ST_DWithin()
機能
球体を計算して速度を追加します(緯度が非常に高い場合や距離が非常に長い場合は、これを行わないでください):
SELECT id, point
FROM my_table
WHERE ST_DWithin(point::geography,
ST_GeogFromText('POINT(-116.768347 33.911404)'),
10000, false);