sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan får du hurtigt 13 record line nær et punkt (lon, lat) postgis

Du kan anvende afstandsfunktionen ved at bruge operatøren <-> direkte i ORDER BY klausul. Hvis du gør det, vil planlæggeren bruge hovedindekset:

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

Demo:db<>fiddle




  1. hvordan tæller man rækker efter første bogstav?

  2. Hvad er den hurtigste måde at afkorte tidsstempler til 5 minutter i Postgres?

  3. SQLite3 (eller generel SQL) henter n'te række af et forespørgselsresultat

  4. mysql, forespørg med til hvor kondation, hvis den ene værdi =enhver ting