Mailinglisten-Archive |
Hi Liste, Ich komme mit dem EXPLAIN Befehl nicht so ganz klar. Ich beschreibe mal eine einfache Struktur und hänge darunter zwei verschiedene Querys auf die exakt gleichen Daten mit der Ausgabe von Explain. users.id 1:n arbeit.user_id arbeit.disziplin_id 1:n disziplin.disziplin_id Zu einem Eintrag in "users" existiert immer mindestens ein Eintrag in "arbeit". Zu einem Eintrag in "arbeit" kann 0-n Einträge in "disziplin" gehören. Wenn ich den Query mit einem Left-Join auf "disziplin" aufbaue, bekomme ich für "arbeit" und "users" ein type "ALL". Der ist nach der mySQL-Doku wirklich schlecht, da dann keine Indizes zum Tragen kommen. Da aber alle in die Verknüpfungen einfließenden Felder indiziert sind wunder mich das schon. Wenn ich den Query mit einem inner Join ausführe sieht die Ausgabe deutlich besser aus. (siehe zweites Beispiel). Kommentare / Hilfe / Unterstürzung / Tipps / Meinung ??? danke, (Beispiel 1) EXPLAIN SELECT arbeit. * , disziplin.d_disziplin, users.name, users.vname, users.aktiv AS user_aktiv FROM arbeit, users LEFT JOIN disziplin ON arbeit.disziplin_id = disziplin.disziplin_id WHERE disziplin.disziplin_id = "2" AND arbeit.user_id = users.id +-----------------+--------+---------------+---------+---------+----------------.----+------+------------+ | table | type | possible_keys | key | key_len | ref | rows | Extra | +-----------------+--------+---------------+---------+---------+---------------------+------+------------+ | arbeit | ALL | user_id | NULL | NULL | NULL | 3 | | | users | ALL | PRIMARY | NULL | NULL | NULL | 4 | where used | | disziplin | eq_ref | PRIMARY | PRIMARY | 4 | arbeit.disziplin_id | 1 | where used | +----------------------+--------+---------------+---------+---------+----------------+------+------------+ 3 rows in set (0.00 sec) (Beispiel 2) EXPLAIN SELECT arbeit. * , disziplin.d_disziplin, users.name, users.vname, users.aktiv AS user_aktiv FROM arbeit, disziplin, users WHERE arbeit.disziplin_id = disziplin.disziplin_id and disziplin.disziplin_id = "2" AND arbeit.user_id = users.id +-------------+--------+--------------------------+------------------+---------+----------------+------+-------+ | table | type | possible_keys | key | key_len | ref | rows | Extra | +-------------+--------+--------------------------+------------------+---------+----------------+------+-------+ | disziplin | const | PRIMARY | PRIMARY | 4 | const | 1 | | | arbeit | ref | user_id,arbeit_disziplin | arbeit_disziplin | 4 | const | 1 | | | users | eq_ref | PRIMARY | PRIMARY | 4 | arbeit.user_id | 1 | | +-------------+--------+--------------------------+------------------+---------+----------------+------+-------+ 3 rows in set (0.00 sec) -- Christian Ruetgers - Geschäftsführung Projekte / Technik 1komma6 - Multimediale Dienstleistungen GmbH Fon: (0251) 57 29-7 Fax: (0251) 57 29-6 eMail: ch.ruetgers at 1komma6.com Mobil: 0173/860 28 93 visit http://www.1komma6.com -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive