PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara cepat mendapatkan 13 garis rekor di dekat titik (lon, lat) postgis

Anda dapat menerapkan fungsi jarak menggunakan operator <-> langsung di ORDER BY ayat. Melakukannya, perencana akan menggunakan indeks inti:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tampilkan pesan terakhir dalam susunan pesan

  2. Django + PostgreSQL:membuat database (hak istimewa apa yang diberikan)

  3. PostgreSQL Berjalan Lambat? Tips &Trik Menuju Sumbernya

  4. Memutakhirkan dari PostGIS 2.1:Kesalahan:mencoba mendefinisikan ulang parameter postgis.backend

  5. Bagaimana cara menentukan benih kunci utama untuk tabel postgres?