phpbar.de logo

Mailinglisten-Archive

[php] 1/2 OT - Anzahl ermitteln

[php] 1/2 OT - Anzahl ermitteln

Andreas Braukmann braukmann at tse-online.de
Mon Mai 23 18:11:07 CEST 2005


--On Montag, 23. Mai 2005 16:27 Uhr +0200 Sebastian Mendel <lists at sebastianmendel.de> wrote:

>> select count(distinct trefnum) from transactions
>> schmiert der PC ab.
>> D.h. es ist kaum noch ein Fenster zu wechseln.
>
> fürs Protokoll: ein Index auf `trefnum` existiert?
>
> DISTINCT-Selects (und COUNTs) sind meist sehr Resourcenfressend

eben. Es wird in jedem Fall ein "full index scan" oder ein
"full table scan" notwendig.

> eventuell ist ja ein "SELECT `tarif` GROUP BY `tarif`"
> und ein ein mysql_num_rows() schneller.

Fuer die notwendige Aggregation muss aber ebenfalls der
komplette Index / die komplette Tabelle durchlaufen
werden. Was den I/O-Bedarf angeht, duerften sich die
beiden Varianten nicht all zu sehr unterscheiden.

Wenn die Verwendung des Index nichts (bzw. nicht genug)
bringt und diese Information sehr haeufig benoetigt wird,
wuerde ich die "Zaehler" explizit in der Datenbank mit-
fuehren. (Das geht natuerlich auch nur, wenn die Insert-
Operationen dann "schnell genug" bleiben.)


-Andreas


php::bar PHP Wiki   -   Listenarchive