Mailinglisten-Archive |
Hallo Andreas, > -----Original Message----- > From: Andreas Kunert [mailto:akunert_(at)_main-rheiner.de] > habe eine Frage zur Performance dieser Abfrage? Ist der LEFT JOIN in der > Regel schneller oder spielt das keine Rolle? > > SELECT stichwort.artikel_id, artikel.inhalt > FROM stichwort,artikel > WHERE stichwort.stichwort = 'topmeldung' AND artikel.id = > stichwort.artikel_id ORDER BY art_id DESC > > SELECT stichwort.artikel_id, artikel.inhalt > FROM stichwort > LEFT JOIN artikel ON artikel.id = stichwort.artikel_id > WHERE stichwort.stichwort = 'topmeldung' ORDER BY art_id DESC Meines Erachtens machst du da einen sogenannten "INNER JOIN" oder einfach JOIN :). Ein Left Join schließt auch alle Sätze aus stichwort ein, für die es keine Treffer in Artikel gibt. Wenn Du nur einen normalen join brauchst ist die Arbeit der ersten variante schon ok. Der Optimizer von Mysql macht aus dem inner join und deinem Statement am Ende (hoffentlich) den selben Ablauf. Um das zu verifizieren, kannst Du vor beide Statements mal ein DESCRIBE setzen (siehe dazu auch Handbuch). > > Wie siehts aus, wenn ich noch eine dritte Tabelle "joinen" will? > > SELECT stichwort.artikel_id, artikel.inhalt,ort.name > FROM stichwort,artikel,ort > WHERE stichwort.stichwort = 'topmeldung' AND artikel.id = > stichwort.artikel_id AND artikel.ort_id = ort.id > ORDER BY art_id DESC Grundsätzlich auch in Ordnung. Ansonsten für 2 joins auf die 1. Tabelle: Select ... from tab1 inner join tab2 on bedingung1 inner join tab3 on bedingung where ... Gruss, Michael Donning --- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive