sql >> データベース >  >> RDS >> PostgreSQL

特定のポイントから特定の半径内のポイントを見つける最も効率的な方法

    ポイントを見つけるためのバッファの作成は、(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);
    


    1. ORA-01654:インデックスを拡張できません

    2. SQLiteException:テーブルはすでに存在します

    3. mysql_*またはmysqli_*に対するpdoの利点

    4. ストアドプロシージャがMVC5に値を返さない