Naar mijn mening zal de WHERE-clausule traag zijn vanwege de wiskunde die ermee gemoeid is, en het gebruik van functies in de WHERE-clausule zal voorkomen dat de database een index gebruikt om de zoekopdracht te versnellen - dus in feite onderzoekt u elk restaurant in de database, en voer de grootcirkelberekeningen uit op elke rij, elke keer dat u een query maakt.
Persoonlijk zou ik de coördinaten TopLeft en BottomRight van een vierkant berekenen (dat alleen grof berekend hoeft te worden met behulp van pythagoras) met zijden die gelijk zijn aan het bereik waarnaar je op zoek bent, en dan de meer gecompliceerde WHERE-clausuletest uitvoeren op de kleinere subset van records die zich binnen dat Lat/Long-vak bevinden.
Met een Index op Lat &Long in de database de query
WHERE MyLat >= @MinLat AND MyLat <= @MaxLat AND MyLong >= @MinLong AND MyLong <= @MaxLong
zou zeer efficiënt moeten zijn
(Houd er rekening mee dat ik geen kennis heb van MySQL specifiek, alleen van MS SQL)