Meiner Meinung nach wird die WHERE-Klausel aufgrund der beteiligten Mathematik langsam sein, und die Verwendung von Funktionen in der WHERE-Klausel wird verhindern, dass die Datenbank einen Index verwendet, um die Abfrage zu beschleunigen - also werden Sie praktisch jedes Restaurant in der untersuchen Datenbank und führen Sie bei jeder Abfrage die Großkreisberechnung für jede Zeile durch.
Persönlich würde ich die TopLeft- und BottomRight-Koordinaten eines Quadrats (das nur grob mit Pythagoras berechnet werden muss) mit Seiten berechnen, die dem gesuchten Bereich entsprechen, und dann den komplizierteren WHERE-Klauseltest für die kleinere Teilmenge von durchführen Datensätze, die sich innerhalb dieses Breiten-/Längengradquadrats befinden.
Mit einem Index auf Lat &Long in der Datenbank wird die Abfrage
WHERE MyLat >= @MinLat AND MyLat <= @MaxLat AND MyLong >= @MinLong AND MyLong <= @MaxLong
sollte sehr effizient sein
(Bitte beachten Sie, dass ich keine speziellen Kenntnisse von MySQL habe, nur von MS SQL)