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

Truy vấn SQL để Thực hiện Tìm kiếm Bán kính dựa trên Kinh độ Vĩ độ

Theo ý kiến ​​của tôi, mệnh đề WHERE sẽ chậm do các phép toán liên quan và việc sử dụng các hàm trong mệnh đề WHERE sẽ ngăn cơ sở dữ liệu sử dụng chỉ mục để tăng tốc truy vấn - vì vậy, trên thực tế, bạn sẽ kiểm tra mọi nhà hàng trong cơ sở dữ liệu và thực hiện các phép toán vòng tròn lớn trên mọi hàng, mỗi khi bạn thực hiện một truy vấn.

Cá nhân tôi sẽ tính toán tọa độ TopLeft và BottomRight của một hình vuông (chỉ cần được tính toán sơ sài bằng cách sử dụng pythagoras) với các cạnh bằng phạm vi bạn đang tìm kiếm, sau đó thực hiện kiểm tra mệnh đề WHERE phức tạp hơn trên tập con nhỏ hơn của các bản ghi nằm trong hình vuông Vĩ độ / Dài đó.

Với Chỉ mục về Vĩ độ &Độ dài trong cơ sở dữ liệu, truy vấn

WHERE     MyLat >= @MinLat AND MyLat <= @MaxLat
      AND MyLong >= @MinLong AND MyLong <= @MaxLong

sẽ rất hiệu quả

(Xin lưu ý rằng tôi không có kiến ​​thức cụ thể về MySQL, chỉ về MS SQL)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đặt giá trị cột làm tên cột trong kết quả truy vấn SQL

  2. Tính tổng của hai truy vấn

  3. Loại dữ liệu MySQL nào nên được sử dụng cho Vĩ độ / Kinh độ với 8 chữ số thập phân?

  4. MySQL:Tôi có thể thực hiện phép nối bên trái và chỉ kéo một hàng từ bảng tham gia không?

  5. Chọn Tất cả sự kiện với Sự kiện-> Lịch biểu-> Ngày giữa ngày bắt đầu và ngày kết thúc trong CakePHP