Ergebnis 1 bis 8 von 8

Thema: SQL-Query.......gehts besser ?

  1. #1
    Erfahrener Benutzer
    Registriert seit
    20.11.2006
    Beiträge
    304

    SQL-Query.......gehts besser ?

    Eventuell ist ja jemand besser in Sachen Mysql und kann mir sagen, ob es eine bessere Methode gibt, um aus 1 Tabelle alle Datensätze und aus 3 weiteren Tabellen eventuelle Übereinstimmungen auszulesen


    In der 1. Tabelle stehen alle Datensätze, die 2-4 Tabelle kann für jeden Datensatz zutreffen, ist das der Fall, werden zusätzliche Funktionen aktiviert.

    Wies sieht es also aus....läßt sich diese Query noch verbessern ?


    PHP-Code:
         $sql1 sql_query("SELECT
            paidmails.*,
            gebucht.k_code AS mail_gebucht,
            black.k_code AS mail_black,
            reload.k_reload AS mail_reload_reload
        FROM " 
    $prefix _DB_TABLE_PWC_PM " AS paidmails
            LEFT JOIN " 
    $prefix _DB_TABLE_PWC_PM_GEBUCHT " AS gebucht
        ON (paidmails.k_code = gebucht.k_code)
            LEFT JOIN " 
    $prefix _DB_TABLE_PWC_PM_BLACKLISTE " AS black
        ON (paidmails.k_code = black.k_code)
            LEFT JOIN " 
    $prefix _DB_TABLE_PWC_PM_RELOAD " AS reload
        ON (paidmails.k_code = reload.k_code)
            WHERE paidmails.k_sponsor = 12
            AND paidmails.k_art = 
    $k_art
            ORDER BY paidmails.k_ver DESC
        "
    ); 

  2. #2
    Erfahrener Benutzer Avatar von Gremlin
    Registriert seit
    05.07.2006
    Beiträge
    5.206
    Wie schaut es mit der Indizierung der Tabellen aus? Sind die dort entsprechend gesetzt?

    Gruß
    Gremlin
    Diskutiere nie mit Idioten - sie holen Dich auf ihr Niveau und schlagen Dich dort mit Erfahrung!



  3. #3
    Erfahrener Benutzer
    Registriert seit
    20.11.2006
    Beiträge
    304
    Zitat Zitat von Gremlin Beitrag anzeigen
    Wie schaut es mit der Indizierung der Tabellen aus? Sind die dort entsprechend gesetzt?

    Gruß
    Gremlin
    Hab ich vergessen zu erwähnen

    Jede Tabelle besitzt ein Feld "k_code" welches Unique ist, der Wert für "k_code" kommt also immer nur 1 x pro Tabelle vor, wobei 1 "k_code" auch in jeder Tabelle vorkommen kann

  4. #4
    Benutzer1699
    Gast
    Ach ja, hier wollte ich ja auch mal meinen Senf zu geben, hoffentlich schmeckts - gibt nachher auch Bratwürstchen dazu

    Folgenden Code einfach mal in einem Query-Browser (mysql,phpMyAdmin...) ausführen.
    Code:
    EXPLAIN
    SELECT
            paidmails.*,
            gebucht.k_code AS mail_gebucht,
            black.k_code AS mail_black,
            reload.k_reload AS mail_reload_reload
        FROM " . $prefix . _DB_TABLE_PWC_PM . " AS paidmails
            LEFT JOIN " . $prefix . _DB_TABLE_PWC_PM_GEBUCHT . " AS gebucht
        ON (paidmails.k_code = gebucht.k_code)
            LEFT JOIN " . $prefix . _DB_TABLE_PWC_PM_BLACKLISTE . " AS black
        ON (paidmails.k_code = black.k_code)
            LEFT JOIN " . $prefix . _DB_TABLE_PWC_PM_RELOAD . " AS reload
        ON (paidmails.k_code = reload.k_code)
            WHERE paidmails.k_sponsor = 12
            AND paidmails.k_art = $k_art
            ORDER BY paidmails.k_ver DESC
    Mehr dazu

  5. #5
    Erfahrener Benutzer
    Registriert seit
    20.11.2006
    Beiträge
    304
    MySQL 5.1.5......das ganze muss leider auch auf v4.3xx oder höher laufen

  6. #6
    Benutzer1699
    Gast
    hehe, natürlich geht das auch unter MySQL 4.1.

    MySQL 4.3? Hab ich bislang nichts von gehört, oder meinst du PHP 4.3.x?
    Explain hat mit PHP nichts zu tun und hilft dir lediglich den Query zu analysieren.

    Notfalls kannst du die Datenbank lokal in einer Umgebung mit den entsprechenden Versionen testen, sollte aber nicht notwendig sein, da EXPLAIN ja mit 4.1 funktioniert.

  7. #7
    Erfahrener Benutzer
    Registriert seit
    20.11.2006
    Beiträge
    304
    Zitat Zitat von ztk-hosting Beitrag anzeigen
    hehe, natürlich geht das auch unter MySQL 4.1.

    MySQL 4.3? Hab ich bislang nichts von gehört, oder meinst du PHP 4.3.x?
    Explain hat mit PHP nichts zu tun und hilft dir lediglich den Query zu analysieren.

    Notfalls kannst du die Datenbank lokal in einer Umgebung mit den entsprechenden Versionen testen, sollte aber nicht notwendig sein, da EXPLAIN ja mit 4.1 funktioniert.
    Funktioniert nur mit left/right/inner/outer join nicht

    Das ganze wird aber gerade als Klasse umgebaut, das spart mir bei (inzwischen 34 Netzwerken) ca 1 MB Code

  8. #8
    Benutzer1699
    Gast
    mist
    Aber Glückwunsch, dass du eine Lösung gefunden hast.

Ähnliche Themen

  1. Query optimieren
    Von Gremlin im Forum [HD] Programmieren
    Antworten: 2
    Letzter Beitrag: 25.12.2008, 15:50
  2. db-query oder mysql-query
    Von Xenon im Forum [HD] Programmieren
    Antworten: 6
    Letzter Beitrag: 11.04.2008, 20:46
  3. Falscher Mysql query
    Von Xenon im Forum [HD] Programmieren
    Antworten: 4
    Letzter Beitrag: 21.01.2008, 15:21
  4. Hier gehts um echtes Geld
    Von Sash im Forum Non VMS Seiten
    Antworten: 0
    Letzter Beitrag: 27.03.2007, 22:40
  5. Preise zu teuer? - gehts noch?
    Von Gremlin im Forum Talk, talk, talk...
    Antworten: 12
    Letzter Beitrag: 15.03.2007, 15:12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •