Mailinglisten-Archive |
Hallo Sebastian, > -----Original Message----- > From: Cybot [mailto:lists at sebastianmendel.de] > ein reines > > SELECT COUNT(*) FROM `artikel` GROUP BY `ort` > > benötigt 0,0009 sec. Kein Wunder, ein Count(...) auf eine einzige Tabelle ohne Where ist optimiert. Da schaut er nur kurz nach, wieviele Sätze die Tabelle hat. > sobald aber eine WHERE hinzukommt > > SELECT COUNT(*) FROM `artikel` WHERE `tinfo2` = '1' GROUP BY `ort` > > auf eines der drei felder benötigt es mindesten 0,11 sec, mit > verwendetem index (ort,tinfo2) > > und das obwohl alle drei felder eine Kardinaltät von 1 haben, kann sie > aber auch nicht weg lassen da sich das später noch ändern könnte Obwohl?? Vielleicht verstehe ich hier was nicht richtig, aber das Handbuch nennt als Kardinalität eines Indexes (nicht Feldes) die Anzahl der eindeutigen Werte in der Tabelle. 1 heißt also: MySql ist der Meinung die Spalte bzw der Index hat in der gesamten Tabelle den gleichen Wert. Dann macht es natürlich auch keinen Sinn einen Index zu nehmen. Idealerweise sollte sich die Kardinalität eines Indexes in Richtung der Anzahl der Sätze in der Tabelle bewegen (oder zumindest grob im >1% Bereich, je nach Anwendung). Bist Du der Meinung die Kardinalität ist unbegründet, dann fehlt wohl noch das Analyze bzw isamchk auf die Tabelle um die Statistiken zu aktualisieren. Grüße, Michael Donning -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive