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)