Mailinglisten-Archive |
probier mal: SELECT COUNT(*) FROM t_contestants = c, t_client_group_data = g WHERE c.c_id = g.c_id AND c.c_delete = 'FALSE' AND g.ev_id = '5' AND g.c_rollback IS NULL; count(*) ist schneller als ein count(tablerow) außerdem kannst du noch ein explain machen, also: EXPLAIN SELECT COUNT(*) FROM t_contestants = c, t_client_group_data = g WHERE c.c_id = g.c_id AND c.c_delete = 'FALSE' AND g.ev_id = '5' AND g.c_rollback IS NULL; dann erhälst du eine tabelle wo drin steht welche indizes verwendet werden, und wie überhaupt nach möglichen datensätzen gesucht wird, da siehst wie effektiv deine indizes genutzt werden! das alles und noch viel mehr: http://www.mysql.com/doc/en/Query_Speed.html gruß sebastian Henning Jödden wrote: > nabend zusammen, > > Das hier: > +------------------+ > | COUNT(c.c_email) | > +------------------+ > | 58762 | > +------------------+ > 1 row in set (5.18 sec) > > hat mir MySQL auf diese Query geantwortet: > mysql> SELECT COUNT(c.c_email) FROM t_contestants=c, > t_client_group_data=g WHERE c.c_id=g.c_id AND c.c_delete='FALSE' AND > g.ev_id='5' AND g.c_rollback IS NULL; > > Ich habe mehrere Query-Konstrukte probiert (mit und ohne aliase, mit > JOIN, ohne COUNT und rows zählen usw.) wovon diese aber die schnellste > ist. > Allerdings kommen mir 5.18 Sek. trotzdem verdammt lang vor. > > Kann man diese Query noch irgendwie anders schreiben um schneller zum > selben Ergebnis zu kommen ? > Ihr werdet wahrscheinlich mehr Informationen brauchen. > Ich wüsste nur grad nicht welche das genau sind, aber wenn Ihr's mir > sagt gebe ich fein Auskunft ;) > > dank & grüsse > Henning > > -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive