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

Thiết lập bảng vĩ độ và kinh độ trong MySQL

Bạn nên lưu trữ các điểm trong một cột đơn của loại dữ liệu Point mà bạn có thể lập chỉ mục bằng SPATIAL chỉ mục (nếu loại bảng của bạn là MyISAM ):

CREATE SPATIAL INDEX sx_place_location ON place (location)

SELECT  *
FROM    mytable
WHERE   MBRContains
               (
               LineString
                       (
                       Point($x - $radius, $y - $radius),
                       Point($x + $radius, $y + $radius)
                       )
               location
               )
        AND Distance(Point($x, $y), location) <= $radius

Điều này sẽ cải thiện đáng kể tốc độ của các truy vấn như "tìm tất cả trong một bán kính nhất định".

Lưu ý rằng tốt hơn nên sử dụng TM đơn giản tọa độ metrical (mở rộng và đông bắc) thay vì cực (vĩ độ và kinh độ). Đối với các bán kính nhỏ, chúng đủ chính xác và các phép tính được đơn giản hóa rất nhiều. Nếu tất cả các điểm của bạn nằm trong một hemishpere và ở xa các cực, bạn có thể sử dụng một kinh tuyến trung tâm duy nhất.

Tất nhiên, bạn vẫn có thể sử dụng tọa độ cực, nhưng các công thức để tính toán MBR và khoảng cách sẽ phức tạp hơn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pdo kết quả miễn phí

  2. Giới hạn quyền truy cập hàng ngày

  3. MySQL:Làm thế nào để đặt lại hoặc thay đổi mật khẩu gốc của MySQL?

  4. Đặt hàng trước COUNT mỗi giá trị

  5. Buộc InnoDB kiểm tra lại các khóa ngoại trên một bảng / bảng?