Menurut pendapat saya klausa WHERE akan menjadi lambat karena matematika yang terlibat, dan penggunaan fungsi dalam klausa WHERE akan mencegah database menggunakan indeks untuk mempercepat kueri - jadi, pada dasarnya, Anda akan memeriksa setiap restoran di database, dan lakukan matematika lingkaran besar di setiap baris, setiap kali Anda membuat kueri.
Secara pribadi saya akan menghitung koordinat TopLeft dan BottomRight dari sebuah persegi (yang hanya perlu dihitung kasar menggunakan pythagoras) dengan sisi yang sama dengan rentang yang Anda cari, dan kemudian melakukan tes klausa WHERE yang lebih rumit pada subset yang lebih kecil dari catatan yang ada di dalam bujur sangkar Lintang/Bujur tersebut.
Dengan Indeks Lat &Long di database, kueri
WHERE MyLat >= @MinLat AND MyLat <= @MaxLat AND MyLong >= @MinLong AND MyLong <= @MaxLong
harus sangat efisien
(Harap dicatat bahwa saya tidak memiliki pengetahuan khusus tentang MySQL, hanya MS SQL)