MySQL Forums
Forum List  »  German

Re: Simpler Join: Komplette Tabelle wird gescannt
Posted by: Thomas Wiedmann
Date: December 16, 2012 02:32AM

Hallo Gregor,

ob MySQL diesen oder jeden Index verwendet, oder auch den Fullscan hängt im Wesentlichen mit der erwarteten Treffermenge im Verhältnis zur durchsuchten Datenmenge zusammen. Wenn mehr als sagen wir 20% der gesamten Datenmenge durchsucht werden muss, ist ein Tablescann nun mal schneller als das nutzen des Index. Ein LIMIT x kann nicht richtig optimiert werden. Du must versuchen, einen passenden WHERE zu finden.

Mit Deinenn Beispieldaten sieht der EXPLAIN so aus (bei mir mit Index, bei Dir ohne Index)

mysql> EXPLAIN
    -> SELECT wetten.id
    ->   FROM wetten_wetten AS wetten
    ->  INNER JOIN wetten_wetten_teams AS wt1
    ->          ON wt1.wette = wetten.id
    -> ORDER BY wetten.id
    -> LIMIT 5;
+----+-------------+--------+-------+---------------+---------+---------+------------------+------+-------------+
| id | select_type | table  | type  | possible_keys | key     | key_len | ref              | rows | Extra       |
+----+-------------+--------+-------+---------------+---------+---------+------------------+------+-------------+
|  1 | SIMPLE      | wetten | index | PRIMARY       | PRIMARY | 4       | NULL             |    1 | Using index |
|  1 | SIMPLE      | wt1    | ref   | wette         | wette   | 4       | sample.wetten.id |    7 | Using index |
+----+-------------+--------+-------+---------------+---------+---------+------------------+------+-------------+
2 rows in set (0.00 sec)

mysql>

um bei Performancefragen richtig helfen zu können, bedarf es folgender Informationen (für alle beteiligten Tabellen):
* SHOW CREATE TABLE tbl; -- liefert engine, indexes
* SHOW TABLE STATUS LIKE 'tbl'; -- liefert die Tabellengrößen
* EXPLAIN SELECT ...; -- EXPLAIN Ausgabe für den Zugriffpfad
* SHOW VARIABLES LIKE '%buffer%'; -- wichtige MySQL Server Einstellungen
Bitte SQL-Befehle und die diservev Ausgaben mit [ code ] [ / code ] (ohne die Leerzeichen) einklammern, sonst kann man das Ergebnis schlecht lesen.

Grüße
Thomas

Options: ReplyQuote




Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.