phpbar.de logo

Mailinglisten-Archive

mehr Geschwindigkeit durch andere formulierung ?

mehr Geschwindigkeit durch andere formulierung ?

Cybot 4t2.com-mysql at tekkno4u.de
Mon Jan 20 19:24:11 CET 2003


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