SUM() en COUNT()

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Eens denken...
    1 query vs. net zoveel queries als dat je leden hebt...
    (ok, je voert maar 1 query uit, maar je haalt het meerdere keren op)


    Wat denk je dat beter is?
    1 query natuurlijk! :p


    Voor het aantal leden weet ik het niet heel zeker, maar ik denk dat COUNT() daar de beste optie voor is...

  • Count moet je alleen gebruiken bij MyISAM tabellen. Bij InnoDB levert dit ontzettend slechte performance, dan moet je dus num_rows gebruiken. Maar in de meeste dingen is InnoDB gewoon sneller (door de rowlocking ipv tablelocking)


    SUM = telt waarden IN de velden op
    COUNT = telt het aantal velden op


    En darsstar, de wachtwoord vergeten optie werkt niet. Die link geeft een error. "Waarde is niet numeriek" o.i.d.
    Darsstar edit: atm heeft alleen koen FTP gegevens, ik stel voor dat we beiden koen proberen te contacteren en dit probleem te melden...

  • Vooral als je een externe database hebt (op een andere server), is de keuze simpel:


    SELECT SUM(power) FROM users;


    Heeft het volgende resultaat
    ------------
    | 52541465 |
    ------------


    Terwijl
    SELECT power FROM users;
    Het volgende resultaat geeft:
    ------------
    | 34545654 |
    ------------
    | 11001465 |
    ------------
    | 541465 |
    ------------
    | 2541465 |
    ------------
    ...


    Veel meer resultaten die opgehaald moeten worden (over het netwerk), gefetched moeten worden door PHP, die in het geheugen staan, enz.


    Daarnaast is de interne SUM() functie van MySQL waarschijnlijk sneller dan rows afgaan binnen PHP.


    Wat COUNT() betreft, innoDB is inderdaad heel sloom met COUNT(). Maar zodra je hier hinder van hebt kun je denk ik beter in een externe tabel het aantal rows bijhouden (Via triggers INSERT en DELETE waarnemen).

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!