EXPLAIN frage
am 19.12.2005 20:25:24 von Jan PrieserHallo zusammen,
ich hab mal wieder ein Problem.
Es geht um diese Abfrage:
explain SELECT channel, c.username, userid
FROM chat_users c
LEFT JOIN user u ON ( c.username =3D u.username )
ORDER BY c.username
chat_users ist hierbei recht klein (0-30 zeilen) und hat keine indizes.
user ist relativ gross (>400k) und hat einen index auf username.
explain liefert mir nicht reproduzierbar zwei unterschiedliche
ergebnisse.
einmal:
+----+-------------+-------+------+---------------+----------+---------+---=
------------------+------+----------------+
| id | select_type | table | type | possible_keys | key | key_len
| ref | rows | Extra |
+----+-------------+-------+------+---------------+----------+---------+---=
------------------+------+----------------+
| 1 | SIMPLE | c | ALL | NULL | NULL | NULL
| NULL | 15 | Using filesort |
| 1 | SIMPLE | u | ref | username | username | 50
| hotornot.c.username | 1 | |
+----+-------------+-------+------+---------------+----------+---------+---=
------------------+------+----------------+
und zum anderen:
+----+-------------+-------+------+---------------+------+---------+------+=
--------+---------------------------------+
| id | select_type | table | type | possible_keys | key | key_len |
ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+=
--------+---------------------------------+
| 1 | SIMPLE | c | ALL | NULL | NULL | NULL |
NULL | 15 | Using temporary; Using filesort |
| 1 | SIMPLE | u | ALL | username | NULL | NULL |
NULL | 321623 | |
+----+-------------+-------+------+---------------+------+---------+------+=
--------+---------------------------------+
das ganze auf einem Mysql 5.0.15 Server
wenn ich das explain mehrmals hintereinander ausführe, kommt mal das
eine, mal das andere ergebnis.
ich versteh hier aber nicht ganz, wieso er überhaupt im zweiten fall
den index nicht benutzt.
hat jemand einen denkanstoß für mich?
vielen dank,
jan prieser