PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để nhanh chóng có được 13 dòng kỷ lục gần một điểm (lon, vĩ độ) postgis

Bạn có thể áp dụng hàm khoảng cách bằng toán tử <-> trực tiếp trong ORDER BY mệnh đề. Làm như vậy người lập kế hoạch sẽ sử dụng chỉ mục chính:

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. PostgreSQL 12:Triển khai K-Nearest Neighbor Space Partitioned Generated Tree Indexes

  2. Làm cách nào để chuyển dữ liệu từ AWS Postgres RDS sang S3 (sau đó là Redshift)?

  3. Thay đổi / đặt lại mật khẩu người dùng postgresql trên Windows 7

  4. Mở rộng hàng qua * không được hỗ trợ ở đây

  5. Lỗi postgres bytea khi liên kết null với các câu lệnh đã chuẩn bị