Podle mého názoru bude klauzule WHERE pomalá kvůli matematice a použití funkcí v klauzuli WHERE zabrání tomu, aby databáze používala index k urychlení dotazu - takže ve skutečnosti prozkoumáte každou restauraci v databázi a provádějte matematiku velkého kruhu na každém řádku, pokaždé, když vytvoříte dotaz.
Osobně bych vypočítal souřadnice TopLeft a BottomRight čtverce (který je třeba pouze surově vypočítat pomocí pythagoras) se stranami rovnými rozsahu, který hledáte, a pak bych provedl složitější test klauzule WHERE na menší podmnožině záznamy, které jsou v tomto čtverci zeměpisné šířky/délky.
S indexem na Lat &Long v databázi dotaz
WHERE MyLat >= @MinLat AND MyLat <= @MaxLat AND MyLong >= @MinLong AND MyLong <= @MaxLong
by měl být velmi efektivní
(Upozorňuji, že konkrétně nemám žádné znalosti o MySQL, pouze o MS SQL)