+ Antworten
Ergebnis 1 bis 6 von 6

Thema: LEFT JOIN - führt zu starker last in verbindung mit Groub by

  1. #1
    TP-Member MrDevil macht alles soweit korrekt
    Registriert seit
    Aug 2004
    Beiträge
    87

    LEFT JOIN - führt zu starker last in verbindung mit Groub by

    Habe zu starke last durch diese Abfrage!

    $sql = "SELECT u.user_id, u.user_name, u.user_avatar, u.user_sex,
    u.user_status, u.user_b_tag, u.user_b_monat, u.user_b_jahr, u.user_age,
    u.user_plz, u.user_regdate, s.logged_in, s.s_user_id
    FROM ".USER_TABLE." u
    LEFT JOIN ".SESSION_TABLE." s ON s.s_user_id=u.user_id
    WHERE u.user_status='0' $letter_man group by u.user_id ORDER BY $sort $S
    limit $seite, $anzahlproseite";

    laut Provider
    Zitat"
    vermutlich führt das "Join" Statement in Verbindung mit "Order By" zu
    der Lastintensität des Query. Beide Teile lassen sich prinzipiell in
    Programmlogik abbilden, was im Falle des "Join" durch mehrere getrennte
    Abfragen zu realisieren ist, beim "Order By" durch eine Sortierung auf
    das unsortierte Ergebnis des Query. In beiden Fällen würde mit Daten im
    Hauptspeicher gearbeitet, was die Last vermutlich deutlich reduzieren
    würde."

    Was meint er mit aufteilen bz wie sieht sowas aus!?

    Danke Euch
    Geändert von MrDevil (17.11.2004 um 12:11 Uhr)

  2. #2
    TP-Specialist Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Avatar von Stuck Mojo
    Registriert seit
    Feb 2001
    Ort
    Helmstedt/Wolfsburg
    Beiträge
    4.108
    Das ist ein stinknormaler Join über NUR 2 Tabellen. Die Last dürfte sogut wie garnicht spürbar sein, wenn die Keys korrekt gesetzt sind. Sind Sie das? Wie gross sind denn die Tabellen? Was steht in $letter_man drin?

    Gruss
    Jan

  3. #3
    TP-Member MrDevil macht alles soweit korrekt
    Registriert seit
    Aug 2004
    Beiträge
    87
    also die Tabelen sind noch nicht sehr gross ca 6000 Datensätze die er durchsuchen muss mit dem JOIN zusammen nochmal ca 2000

    $letter_man ist derzeit ohne bedeutung ist leer! Wird für späteres update benötigt...

    Meine Table!....

    ::::::.
    CREATE TABLE `user_db` (
    `user_id` int(120) NOT NULL auto_increment,
    `user_name` varchar(25) NOT NULL default '',
    `user_vorname` varchar(120) NOT NULL default '',
    `user_nachname` varchar(120) NOT NULL default '',
    `user_strasse` varchar(120) NOT NULL default '',
    `user_hnr` varchar(120) NOT NULL default '',
    `user_password` varchar(32) NOT NULL default '',
    `user_level` tinyint(4) NOT NULL default '0',
    `user_regdate` int(11) NOT NULL default '0',
    `user_lastlogon` int(11) NOT NULL default '0',
    `user_count` int(120) NOT NULL default '0',
    `user_posts` mediumint( NOT NULL default '0',
    `user_new_privmsg` smallint(5) NOT NULL default '0',
    `user_notify` tinyint(1) NOT NULL default '0',
    `user_avatar` varchar(100) NOT NULL default '0',
    `user_avatar_ok` int(1) NOT NULL default '0',
    `user_mail` varchar(255) NOT NULL default '',
    `user_actkey` varchar(32) NOT NULL default '',
    `user_totaltime` int(11) NOT NULL default '0',
    `user_b_tag` int(2) NOT NULL default '0',
    `user_b_monat` int(2) NOT NULL default '0',
    `user_b_jahr` int(4) NOT NULL default '0',
    `user_sex` char(1) NOT NULL default '0',
    `user_status` int(1) NOT NULL default '0',
    `user_age` tinyint(4) NOT NULL default '0',
    `user_plz` int(6) NOT NULL default '0',
    `user_ort` varchar(120) NOT NULL default '',
    `user_bundesland` varchar(120) NOT NULL default '',
    `user_land` varchar(50) NOT NULL default '',
    `user_search_art` int(2) NOT NULL default '0',
    `user_search_sex` int(2) NOT NULL default '0',
    `user_sternzeichen` int(2) NOT NULL default '0',
    `see_user_mail` tinyint(4) NOT NULL default '0',
    KEY `user_id` (`user_id`)
    )



    und die SESSIOn

    CREATE TABLE `user_session` (
    `UID` int(10) unsigned NOT NULL auto_increment,
    `ID` varchar(35) NOT NULL default '',
    `JTime` int(15) NOT NULL default '0',
    `Time` int(15) NOT NULL default '0',
    `Expire` int(10) NOT NULL default '0',
    `IP` varchar(32) NOT NULL default '',
    `UserAgent` varchar(255) NOT NULL default '',
    `logged_in` int(1) NOT NULL default '0',
    `s_user_id` int(1) NOT NULL default '0',
    PRIMARY KEY (`UID`)
    )

  4. #4
    TP-Specialist Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Avatar von Stuck Mojo
    Registriert seit
    Feb 2001
    Ort
    Helmstedt/Wolfsburg
    Beiträge
    4.108
    @usertabelle:
    warum nur key und nicht primary key?

    @sessions:
    überhaupt kein index auf s_user_id vorhanden!!

  5. #5
    TP-Member MrDevil macht alles soweit korrekt
    Registriert seit
    Aug 2004
    Beiträge
    87
    nee kein Index auf Session ist das schlimm??
    Hab glaub ich mal gelesen das das nicht wichtig sei...

    "warum nur key und nicht primary key?"
    hmmm das frag ich mich auch gerade... ist da ein unterschied

    können diese beiden Fehler zu so einer last führen?

    Mein Problem ist ja nun das der Server in die Knie geht sobald die SESSIONS mit ins spiel kommen ... die brauch icha ebr die abfrage um zu schaun ob der user bez die User online sind!........

  6. #6
    TP-Specialist Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Avatar von Stuck Mojo
    Registriert seit
    Feb 2001
    Ort
    Helmstedt/Wolfsburg
    Beiträge
    4.108
    Naja, wenn du keinen Index in in der Session-Tabelle setzt wird die gesamte Tabelle beim Join untersucht. Existiert ein Index auf die Spalte, aufder du den Join machst, dann "weiss" die Datenbank bereits welche Datensätze zu welchem Index gehören... Das weiss ist mit absicht in "... aber sollte die Sache etwas klarer machen

    Probiers doch einfach mal?

    Gruss
    Jan

+ Antworten

Ähnliche Themen

  1. Ärger mit Chef wegen WebDesign-Auftrag
    Von wildmieze im Forum Archiv
    Antworten: 4
    Letzter Beitrag: 18.08.2004, 15:25
  2. Welche Grafikkarte ist die schnellste Poser5?
    Von rolli220656 im Forum Hardware
    Antworten: 2
    Letzter Beitrag: 14.08.2004, 00:42
  3. FTP Verbindung sehr langsam - Woran liegts??
    Von schmali im Forum Server & Provider
    Antworten: 15
    Letzter Beitrag: 08.07.2004, 12:16
  4. Antworten: 7
    Letzter Beitrag: 11.07.2003, 15:19
  5. ftp verbindung problem...
    Von vranjanac im Forum Dreamweaver & andere Webeditoren
    Antworten: 3
    Letzter Beitrag: 30.06.2003, 03:16

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51