IS THERE ANYTHING WRONG With this
query?
In my opinion the WHERE clause is going to be slow because of the maths involved, and the use of functions in the WHERE clause will prevent the database using an index to speed the query – so, in effect, you will examine every restaurant in the database, and perform the great-circle maths on every row, every time you make a query.
Personally I would calculate the TopLeft and BottomRight co-ordinates of a square (which only needs to be crudly calculated using pythagoras) with sides equal to the range you are looking for, and then perform the more complicated WHERE clause test on the smaller subset of records that are within that Lat/Long square.
With an Index on Lat & Long in the database the query
WHERE MyLat >= @MinLat AND MyLat <= @MaxLat AND MyLong >= @MinLong AND MyLong <= @MaxLong
should be very efficient
(Please note that I have no knowledge of MySQL specifically, only of MS SQL)