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