Mailinglisten-Archive |
Hallo, Patrick! Also las ich bei Patrick Bierans [mailto:pbierans_(at)_lynet.de] > > Vielleicht könnte man noch in einer Fußnote anfügen, > > dass und warum die LEFT JOINS die Datenbankabfragen viel effizienter > > machen. (Oder besser: in der Frage ,,Wie schreibe ich effiziente > > Abfragen?'' auf Deinen Artikel verweisen) > Gerne, hab' ich persönlich aber keine Ahnung von. OK, kleiner Hinweis: Der Unterschied zwischen verketteten WHERE-Klauseln und der LEFT-JOIN-Methode liegt darin, _wie_ der MySQL-Server die Suchmenge bestimmt, aus der er danach die Ergebnismenge aussiebt. Bei verketteten WHERE-Klauseln kombiniert der Server jede Zeile aus Tabelle A mit jeder Zeile aus Tabelle B und die so entstandene temporäre Suchtabelle mit jeder Zeile aus Tabelle C. Bei 100 Zeilen in Tabelle A, 200 Zeilen in Tabelle B und 300 Zeilen in Tabelle C ergibt sich damit eine Suchmenge von 6.000.000 Zeilen [!!]. Bei der LEFT-JOIN-Methode haben wir dagegen die Möglichkeit, für die Suchmenge die Einträge aus Tabelle B und die Einträge aus Tabelle C _vorzuselektieren_ (ON [Kriterium_A] AND [Kriterium_B] AND ...). Es kann also sein, dass Tabelle A (immer komplett) nur mit 10 Einträgen aus Tabelle B und beide nur mit 7 Einträgen aus Tabelle C kombiniert werden. Macht nach wie vor 100 Zeilen in der Suchmenge! Überrascht? Nach meiner Theorie müsste es sich bei der Suchmenge um die Zeilenmenge derjenigen Tabelle handeln, die den größten Beitrag an Zeilen liefert; die Tabellen werden bei LEFT JOIN nicht vertikal, sondern horizontal verbunden und die fehlenden Felder bekanntlich immer mit NULL aufgefüllt. Wir können es also so einrichten, dass der Server statt in 6 Mio. Einträgen nur in 100 Einträgen suchen soll! Das nenne ich eine Frage der Effizienz! > > > ,,Wie kann ich MS ACCESS an den MySQL-Server anbinden?'' > Hab' ich persönlich aber keine Ahnung von. Richtete sich auch nicht an Dich, sondern an diejenigen, die mitlesen und sich ,,hauptamtlich'' für die FAQ engagieren. Just my 2% -- Matthias Lampert, Hamburg --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive