Was sagen die Profis zu folgendem Vorgehen beim JOIN?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Was sagen die Profis zu folgendem Vorgehen beim JOIN?

    Hallo,

    ersteinmal vielen Dank an alle die dieses super Forum betreuen und darin mitwirken! Auch mein aktuelles Problem konnte ich selber lösen, allerdings würde ich gerne wissen was die Pro's zu meinem Konstrukt in Sachen Performance sagen. Gibts evtl. was schnelleres bzw. einfacheres oder einfach besseres?

    Ich habe 3 MySQL Tabellen:

    1. Adressdatenbank
    2. Geodaten
    3. Beschreibt zusammenhänge von verschiendenen Adressdaten.

    Tabelle3:
    kunden_id
    vorschlag_id
    datum

    Ziel ist es, alle Adressen aus einem bestimmten Umkreis zu filtern und auszugeben. Gleichzeitig soll die so entstehende Liste gefiltert werden, so dass alle Adressen die über Tabelle3 anhand der vorschlag_id einer kunden_id zugeordnet sind rausfliegen. Ich hoffe Ihr versteht was ich meine! ;-)

    Bisher funktioniert soweit alles, ich frage mich nur ob meine Lösung eine saubere Lösung ist... - Würde mich über Kritik bzw. Vorschläge sehr freuen! (Das Thema MySQL "auf dieser Ebene" ist mir noch sehr neu! ;-))

    Den Geokram habe ich der Übersichthalber entfernt!

    PHP-Code:
        "SELECT
            profile.ID, 
            DATE_FORMAT(profile.letzterlogin, '%d.%m.%Y %T') AS nletzterlogin,
            profile.link_id, 
            profile.email, 
            profile.malter, 
            profile.plz, 
            profile.vorname,
            [GEO Entfernung] as Entfernung
        FROM
            geodaten
        JOIN
            profile
        ON
            geodaten.plz = profile.plz AND
            [GEO Entfernung] < [umkreis]
        WHERE 
            profile.email 
        NOT IN
            (SELECT 
                vorschlag_id 
            FROM 
                vorschlaege 
            WHERE 
                kunden_id ='"
    .$cur_email."' 
            AND 
                vorschlag_id = profile.email)
        AND 
            profile.email != '"
    .$cur_email."'
        ORDER BY
            Distance ASC"

    So nun seid Ihr dran!

    LG der Tiggr!
    Zuletzt geändert von Tiggr; 07.09.2006, 16:14.

  • #2
    Bitte brich deinen code um.
    Dann macht man sich auch die mühe durchzulesen.
    Webdesign und Webentwicklung - Plunix.de

    Kommentar


    • #3
      Ich hoffe ich habs so nun richtig gemacht! - Und Danke schonmal...

      Kommentar


      • #4
        Also wenn dieser Query wie gesagt funktioniert halte ich diesenn schon für gelungen.
        Alles in einen untergracht und nicht in 3 zersplittet.

        Die Query laufzeit sollte so auch recht optimal sein.
        Webdesign und Webentwicklung - Plunix.de

        Kommentar


        • #5
          Vielen Dank! - Wie gesagt, er funktioniert soweit ohne Probleme die Zeit ist soweit auch super. Ich habe aber bisher auch nur die kompletten PLZ mit Längen und Breitengraden von D in der DB + ca. 30 Testadressen...

          Darum wollte ich mal kurz hören was die Profis dazu sagen, nicht dass ich nachher unter "Last" feststellen muss, dass ich nen dicken Fehler bzw. Flaschenhals eingebaut habe!

          Ich sag dann erstmal Danke, wenn noch jemand etwas sagen möchte kann er dass gerne tun! - Ich freu mich...

          LG

          Kommentar


          • #6
            Hi,

            naja der subquery geht schon auf die performance, aber beim
            überfliegen und ohne dein scheme genau zu kennen kann
            ich nicht sagen ob es auch ohne geht.

            Weiterhin ist es so dass der query gut sein kein aber du
            z.B. einfach unglückliche oder gar keine indezies im schema
            verwendest sodass dann dort flaschenhälse entstehen können.

            greets
            (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

            Kommentar

            Lädt...
            X