Mailinglisten-Archive |
Hallo, Michael Bonfert schrieb: > > > Vielleicht hilft: > > http://www.mysql.com/doc/M/y/MySQL_indexes.html > > Hier steht ganz unten, dass falls ueber 30% der Tabelle getroffen > > wuerden, MYSQL nicht den Index benutzt, weil es dann schneller geht. > > Trifft das bei Dir zu??? > > Leider nicht. Auch wenn ich den SQL Befehl mit einer Limit-Anweisung > versehe wird kein Index verwendet. > Wenn ich den SQL Befehl so formuliere, daß ich alle Boards <>'board1' > herausfiltere wir der entsprechende Index verwendet. Bsp. "SELECT * FROM > Posts WHERE Board<>'board2' AND Board<>'board3' Board<>'board4'ORDER BY > Number DESC" > Wenn es in Spalte 'Board' nur Einträge board1..board4 existieren liefert > mir dieser Befehl ja die gleiche Ergebnismenge und dies mit Index. Aber das weiss der SQL-Optimizer ja nicht. Der sieht nur, dass der Index fuer Board1 ueber 30% ausmacht und geht dann ueber alle Datensaetze weil er so schneller ist. Anders geht er ueber den Index, weil pro Board wahrscheinlich weniger als 30% getroffen werden. Und die Ergebnismenge kennt er vorher nicht. Der Limit Befehl aendert nichts, da er ja ueber mehr als 30% sortiert und dann erst den Limit macht. Ohne Sortierung koennte das Limit eventuell den Index nutzen. -- Stephan --- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive