Bobby: Performanceproblem Umkreissuche -> Lösung : Bitte um Überprüfung

Beitrag lesen

Moin

SELECT SQL_CALC_FOUND_ROWS users.*, dest.latitude, dest.longitude, ACOS(
             SIN(RADIANS(src.latitude)) * SIN(RADIANS(dest.latitude))
             + COS(RADIANS(src.latitude)) * COS(RADIANS(dest.latitude))
             * COS(RADIANS(src.longitude) - RADIANS(dest.longitude))
        ) * 6380 AS distance,  FROM users LEFT JOIN postalcodes_de src ON (src.postalcode='01855' AND src.placename='Sebnitz') LEFT JOIN postalcodes_de dest ON (dest.postalcode=users.zip AND dest.placename=users.city) WHERE CONCAT(users.zip,users.city) IN (
                                    SELECT CONCAT(dest.postalcode,dest.placename)  FROM postalcodes_de dest
                                    LEFT JOIN postalcodes_de src ON (src.postalcode='01855' AND src.placename='Sebnitz')
                                     WHERE (ACOS(
                                     SIN(RADIANS(src.latitude)) * SIN(RADIANS(dest.latitude))
                                     + COS(RADIANS(src.latitude)) * COS(RADIANS(dest.latitude))
                                     * COS(RADIANS(src.longitude) - RADIANS(dest.longitude))
                                     ) * 6380 ) <=20)  ORDER BY  distance  ASC LIMIT 0,4


>   
  
Manchmal sieht man den Walt vor lauter Bäumen nicht. Die Lösung brauch sich ja nur auf die Distance zu beziehen. Oder sehe ich das falsch?  
  
~~~sql
  
 SELECT SQL_CALC_FOUND_ROWS users.*, ACOS(  
              SIN(RADIANS(src.latitude)) * SIN(RADIANS(dest.latitude))  
              + COS(RADIANS(src.latitude)) * COS(RADIANS(dest.latitude))  
              * COS(RADIANS(src.longitude) - RADIANS(dest.longitude))  
         ) * 6380 AS distance  FROM users LEFT JOIN postalcodes_de src ON (src.postalcode='01855' AND src.placename='Sebnitz') LEFT JOIN postalcodes_de dest ON (dest.postalcode=users.zip AND dest.placename=users.city) WHERE  
(ACOS(  
 SIN(RADIANS(src.latitude)) * SIN(RADIANS(dest.latitude))  
 + COS(RADIANS(src.latitude)) * COS(RADIANS(dest.latitude))  
 * COS(RADIANS(src.longitude) - RADIANS(dest.longitude))  
 ) * 6380 ) <=20  
 ORDER BY  distance  ASC LIMIT 0,4  
 

Habe ich etwas übersehen oder ist es wirklich so einfach? :o ^^

Gruß Bobby

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
### Henry L. Mencken ###
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
### Viktor Frankl ###
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)