Mailinglisten-Archive |
Christian Ruetgers schrieb:
> 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.
>
> 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)
die erste Tabelle (im FROM) muss imer die sein die die wenigsten
Ergebnisse liefert, also meißtens wo sich der Datensatz befindet nachdem
gesucht wird, in deinem Fall disziplin.disziplin_id
also sehe eine ordentliche Abfrage in deinem Fall so aus:
SELECT `arbeit`.*,
`disziplin`.`d_disziplin`,
`users`.`name`,
`users`.`vname`,
`users`.`aktiv` AS `user_aktiv`
FROM `disziplin`
LEFT JOIN `arbeit`
ON `arbeit`.`disziplin_id` = `disziplin`.`disziplin_id`
LEFT JOIN `users`
ON `users`.`id` = `arbeit`.`user_id`
WHERE `disziplin`.`disziplin_id` = 2
grüße
--
Sebastian Mendel
www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com
www.sf.net/projects/phpdatetime www.sf.net/projects/phptimesheet
--
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive