Hallo,
is het mogelijk om het aantal rows in een tabel te tellen via een query, en is dit sneller dan de PHP functie mysql_num_rows?

Ik heb namelijk een script waarin telkens vele 100en rows moeten getelt worden, en het werkt maar heel traag.

Ik heb al geprobeerd met
<?php
SELECT SQL_CALC_FOUND_ROWS * FROM tabel WHERE (voorwaarden)
?>
maar dit werkt niet echt :S

Thomas Vermaercke
is het mogelijk om het aantal rows in een tabel te tellen via een query, en is dit sneller dan de PHP functie mysql_num_rows?
Ja, met de functie COUNT() (zie handleiding van jouw database). Dat is vele, vele malen sneller dan eerst alle data ophalen en volgens in PHP alsnog te gaan tellen hoeveel records er zijn. Het ophalen van de records is namelijk volkomen overbodig.

SQL_CALC_FOUND_ROWS ken ik overigens niet. Welke database gebruikt dit?

Edit: MySQL dus... (mompel iets over m'n mond houden... ;) )

SELECT 
  COUNT(*) AS aantal 
FROM 
  tabelnaam

Let er wel op dat dit een agregate functie is en je wellicht (afhankelijk van de benodigde data) ook een GROUP BY nodig hebt. MySQL kan hiermee hopeloos de mist ingaan. Hanteer de SQL-92 standaard en er is niets aan de hand, je krijgt dan correcte data retour.
Ik gebruik MySQL. (sorry dat ik het zeg tegen iemand met in zijn profiel "Use PostgreSQL!" :P)

Idd, count werkt inderdaad massa's beter, bedankt!
Ik had er al over gelezen maar ik dacht dat het een functie was om alle waarden van alle rows bij elkaar op te tellen :S
een functie was om alle waarden van alle rows bij elkaar op te tellen :S
Dat is SUM()
Is er ook een functie om het gemiddelde van alle rows te berekenen? (voor één waarde)
Wow, ik zie het al, ik zal de handleidingen van m'n programmeertalen nog eens goed moeten nalezen ;)
Bedankt, het werkt supergoed nu!
Voor MySQL is dit stuk vooral handig: klikkerdeklik

Gebruik je PostgreSQL (ja mag het even!), dan neem je dit stuk van de handleiding even door.
Ok, bedankt voor al jullie hulp ;)

Reageren