phpbar.de logo

Mailinglisten-Archive

Re: MySQL join
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MySQL join



Marc Logemann schrieb am Mittwoch, den 29. September 1999,
in der deutschen MySQL-Mailingliste:
> kann ich mit Mysql (3.22.23) einen LEFT INNER JOIN realisieren, ohne
> den nicht soooo performanten syntax:
> 
> select * from table1, table2 where table1.field = table2.field
> 
> zu nehmen?? (da hier erst kartesiches Produkt gebildet wird)

Nö, das stimmt so nicht.  MySQL bildet nicht erst ein riesiges
kartesisches Produkt, aus dem dann Zeilen herausgefiltert werden
(auch wenn das die Syntax vermuten lassen könnte), sondern sucht sich
die passenden Partnerzeilen aus beiden Tabellen und erzeugt daraus
dann passend die Ergebniszeilen.

Für die Geschwindigkeit dieser Suche in den Tabellen ist aber
entscheidend, daß Du Indexe auf beiden Feldern hast und beide Felder
den gleichen Typ haben!

Kennst Du den Befehl EXPLAIN in MySQL?  Damit kannst Du sehr schön
sehen, welche Indexe MySQL für eine Query nutzt ...

Siehe auch im MySQL-Handbuch die Kapitel
"7.21 EXPLAIN syntax (Get information about a SELECT)" und
"10.4 How MySQL uses indexes" und folgende.

> Ich habe irgendwo was gelesen das 3.23 die Klausel INNER JOIN
> versteht, stimmt das??

Ja, das ist synonym zum Komma.  Die Join-Bedingung kommt weiterhin in
den WHERE-Teil (was keinen Nachteil darstellt, wie ich zu erklären
versuche).

Jedes halbwegs vernünftige Datenbanksystem sollte eh unabhängig davon,
ob Du eine ON-Klausel schreibst oder eine Bedingung im WHERE-Teil, den
optimalen Weg zur Auswertung suchen, was sicher fast immer bedeutet,
_kein_ volles Kreuzprodukt zu materialisieren.

Ciao,
  Martin
-- 
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ >
PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26  E4 EC 80 58 7B 31 3A D7

---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive