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

ポイント(lon、lat)postgisの近くに13のレコードラインをすばやく取得する方法

    演算子<->を使用して距離関数を適用できます ORDER BYに直接 句。そうすることで、プランナーは要点インデックスを使用します:

    EXPLAIN (ANALYSE,COSTS OFF)
    SELECT * FROM data
    ORDER BY geog <-> ST_Point(6.5, 48.7) 
    LIMIT 13;
    
                                QUERY PLAN
    ----------------------------------------------------------------------
    Limit (actual time=15.019..15.213 rows=13 loops=1)
      ->  Index Scan using idx_data_point on data (actual time=15.017..15.210 rows=13 loops=1)
            Order By: (geog <-> '0101000020E61000000000000000001A409A99999999594840'::geography)
    Planning Time: 0.372 ms
    Execution Time: 15.309 ms
    

    デモ: db<>fiddle




    1. エクスポート/インポート後にデータベースサイズが異なる

    2. Oracleへの接続:CodeIgniterとLaravel

    3. OracleでPL/SQLストアド関数本体を表示する方法

    4. 2つのテーブルから最大値を選択します