sql >> Databáze >  >> RDS >> Mysql

Jak efektivně najít nejbližší místa v blízkosti daného místa

Myslím, že to, čeho se snažíte dosáhnout, by se dalo udělat lépe pomocí vzorce Haversine ve vašem SQL. Google má návod, jak získat nejbližší místa v databázi MySQL ale obecná myšlenka je toto SQL:

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) )
  * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) 
  * sin( radians( lat ) ) ) ) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance LIMIT 0 , 20;

Pak se veškerá práce, kterou musíte udělat, dělá s databází, takže nemusíte stahovat všechny podniky do skriptu PHP, než vůbec zkontrolujete vzdálenost.



  1. Vraťte konec měsíce v SQLite

  2. Jaké nejdelší možné celosvětové telefonní číslo bych měl zvážit v SQL varchar(length) for phone

  3. Oprava „ERROR 1250 (42000):Tabulku „…“ z jednoho z SELECT nelze použít v klauzuli ORDER“ v MariaDB

  4. MariaDB ROWNUM() Vysvětleno