Gast: Laufzeit mit Entfernungstabelle verkürzen?

Beitrag lesen

Hello,

Wenn Du mal das komplette Statement und die Tabellendefinitionen dazu hättest?
Vermutlich berechnest Du auch noch jede Entfernung zweimal?

Wieso?

Ich hole mir genau einen Ort mit Koordinaten:

SELECT  
 name  
,geo_laenge  
,geo_breite  
FROM orte  
WHERE id = 561  
...

berechne longitude und latitude einmal:

$rad_lon1 = deg2rad( $row_zentrum['geo_laenge'] ); // = 0.173359191277  
$rad_lat1 = deg2rad( $row_zentrum['geo_breite'] ); // = 0.869112880969

uns setze die in die Formel für die anderen Orte ein:

SELECT  
...  
,ROUND( 6366.19773095 * ACOS( SIN(0.869112880969) *SIN(RADIANS(ort1.geo_breite)) +COS(0.869112880969) *COS(RADIANS(ort1.geo_breite)) *COS(RADIANS(ort1.geo_laenge) -0.173359191277 ))) distanz  
...  
GROUP BY ...  
ORDER BY dist_km

Tabelle orte:

 `id` int(11) NOT NULL auto_increment,  
  `owner_id` int(11) NOT NULL default '0',  
  `land_kz` varchar(3) collate utf8_unicode_ci default NULL,  
  `name` varchar(50) collate utf8_unicode_ci NOT NULL,  
  `geo_laenge` float default NULL,  
  `geo_breite` float default NULL,  
  `plz` varchar(10) collate utf8_unicode_ci NOT NULL,  
...  
  `last_modified` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,  
  PRIMARY KEY  (`id`),  
  UNIQUE KEY `land_plz_name` (`land_kz`,`plz`,`name`),  
  KEY `plz` (`plz`)  
)

Würde ein Key auf Länge und Breite die Berechnung beschleunigen?

MfG Gast