sql >> Database teknologi >  >> RDS >> Mysql

Hvordan man effektivt finder de nærmeste steder i nærheden af ​​en given placering

Jeg tror, ​​det du forsøger at opnå, kunne gøres bedre ved at bruge Haversine-formlen i din SQL. Google har en vejledning i, hvordan man får de nærmeste placeringer i en MySQL-database men den generelle idé er denne 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;

Så er alt det arbejde, du skal udføre, udført på databasen, så du ikke behøver at trække alle virksomheder ind i dit PHP-script, før du overhovedet tjekker afstanden.



  1. Kan ikke starte en distribueret transaktion

  2. Buffere (cirkel) i PostGIS

  3. Kan jeg blande MySQL API'er i PHP?

  4. PostgreSQL - Skrivning af dynamisk sql i lagret procedure, der returnerer et resultatsæt