login  Naam:   Wachtwoord: 
Registreer je!
 Forum

count(*)

Offline Voldemort - 29/05/2005 17:58
Avatar van VoldemortPHP ver gevorderde In dit topic (http://www.sitemasters.be/?pagina=forum/index&ond=reply&cat=2&id=266) zag ik dat count(*) sneller is.

Maar er moet toch een extra query (de gewone en die met de count erin) uitgevoerd worden, gaat dit dan niet trager? En het dataverkeer?

17 antwoorden

Gesponsorde links
Offline ElCheapo - 29/05/2005 18:01 (laatste wijziging 29/05/2005 18:01)
Avatar van ElCheapo PHP beginner
Citaat:
En het dataverkeer?
@#!$$@$%&&(*%^@#$^#^

Citaat:
Maar er moet toch een extra query (de gewone en die met de count erin) uitgevoerd worden, gaat dit dan niet trager?
de gewone query hoeft dus niet meer uitgevoerd te worden.

Als je het aantal + de data wilt hebben kun je natuurlijk gewoon mysql_num_rows doen. NATUURLIJK is een 2e OVERBODIGE query dan langzamer.
Offline Voldemort - 29/05/2005 18:02
Avatar van Voldemort PHP ver gevorderde Wat bedoel je dan met @#!$$@$%..., geeft niet of geeft wel?

Ik wil de data + het aantal hebben, kan dit dan ook met 1 query, die met de count erin.
Offline Gerard - 29/05/2005 18:02
Avatar van Gerard Ouwe rakker En in plaats van COUNT(*) zou je zelfs nog gewoon COUNT(veldnaam) kunnen doen, scheelt ook weer iets 
Offline Voldemort - 29/05/2005 18:08 (laatste wijziging 29/05/2005 18:15)
Avatar van Voldemort PHP ver gevorderde Dat weet ik ook, Proximus .

Maar ik heb het over het algemeen. Kan iemand mijn vraag beantwoorden?
Offline Tuinstoel - 29/05/2005 18:48
Avatar van Tuinstoel PHP expert Stel je query is het selecteren van de gegevens uit een gastenboek. Dan heeft het opvragen met COUNT() een extra query nodig, maar omdat die andere query er bijna altijd is, van het selecteren, is mysql_num_rows() naar mijn mening beter.

En hoezo dataverkeer? 1 byte verschil misschien, maar het kost wel serverload.

  1. $sQuery = "SELECT * FROM `tabel`";
  2. if(!$rResource = @mysql_query($sQuery))
  3. { /* failed */ }
  4. else
  5. {
  6. echo mysql_num_rows($rResource).' records in tabel.';
  7. }
Offline ElCheapo - 29/05/2005 18:49
Avatar van ElCheapo PHP beginner
Citaat:
En in plaats van COUNT(*) zou je zelfs nog gewoon COUNT(veldnaam) kunnen doen, scheelt ook weer iets
COUNT(1) is nog altijd het best.

en de vraag was al beantwoord.
Offline Gerard - 29/05/2005 21:07
Avatar van Gerard Ouwe rakker Count(1) ligt gelijk aan Count(*)?
Offline Tuinstoel - 30/05/2005 14:33
Avatar van Tuinstoel PHP expert Neen, met de * selecteer je alles, netzoals bij SELECT * FROM tabel, maar maar met (1) het eerste veld, dacht ik, maar dit durf ik niet met zekerheid te vertellen. Het is in ieder geval synoniem aan het selecteren van één veld.
Offline ElCheapo - 30/05/2005 15:25
Avatar van ElCheapo PHP beginner COUNT() telt het aantal rijen waar de waarde niet NULL is. Als je COUNT(*) gebruikt worden alle kolommen op NULL gecontroleerd, als je COUNT(veldnaam) gebruikt wordt alleen die kolom op NULL gecontroleerd (dus sneller) en met COUNT(1) wordt voor elke rij 1 vergeleken met NULL (en geeft dus altijd false, want 1 != NULL).

Dat is dus sneller omdat er niet naar de inhoud van de tabel gekeken wordt. Bovendien tel je zo echt alle rijen. Als je COUNT(veldnaam) of COUNT(*) gebruikt en de waarde is een keer NULL, dan wordt die rij niet meegeteld.
Offline prorsoft - 30/05/2005 19:16 (laatste wijziging 30/05/2005 19:17)
Avatar van prorsoft PHP gevorderde ik gebruik liever COUNT(*), want met mysql_num_rows() heb ik alleen maar problemen mee.

@ElCheapo: je kunt die count toch meesturen in dezelfde query???:s
Offline Voldemort - 01/06/2005 17:48
Avatar van Voldemort PHP ver gevorderde Dus jullie zeggen mij:

Aantal: count()
Aantal + data: mysql_num_rows
Data: gewone query

Zo is het dus het best?
Offline Legolas - 01/06/2005 17:50
Avatar van Legolas Onbekend Ja, zo is het het best.
Offline Voldemort - 01/06/2005 21:53 (laatste wijziging 01/06/2005 22:08)
Avatar van Voldemort PHP ver gevorderde
  1. <?php
  2. $catid = $_GET[catid];
  3. $bestaat_cat = "SELECT COUNT(`id`) FROM `forum_categorieen` WHERE `id`='$catid'";
  4. $result_bestaat_cat = mysql_query($bestaat_cat);
  5. if(empty($catid) || $result_bestaat_cat == "0")
  6. {
  7. echo "Deze categorie bestaat niet.";
  8. }
  9. ?>


Waarom werkt dit niet? Als ik een onbestaande cat invoer geeft ie de fout in de if niet. Dan gaat ie verder met de code. Wat oe ik fout?
Offline nemesiskoen - 01/06/2005 22:09 (laatste wijziging 01/06/2005 22:09)
Avatar van nemesiskoen Gouden medaille

PHP expert
integer buiten quotes mss?

  1. <?php
  2. if(empty($catid) || $result_bestaat_cat == 0)
  3. {
  4. echo "Deze categorie bestaat niet.";
  5. }
  6. ?>
Offline Frederic - 01/06/2005 23:10 (laatste wijziging 01/06/2005 23:10)
Avatar van Frederic PHP ver gevorderde En dit?
  1. <?php
  2. $catid = $_GET[catid];
  3. $bestaat_cat = "SELECT COUNT(`id`) FROM `forum_categorieen` WHERE `id`='$catid'";
  4. if (!$result_bestaat_cat = mysql_query($bestaat_cat))
  5. {
  6. echo "Shit, de fout zit hoger!";
  7. }
  8. if(empty($catid) || ($result_bestaat_cat == "0"))
  9. {
  10. echo "Deze categorie bestaat niet.";
  11. }
  12. ?>

Offline Gerard - 02/06/2005 08:32
Avatar van Gerard Ouwe rakker Je doet een COUNT query maar vergeet om het resultaat goed op te halen?

  1. <?php
  2. $qCheckCat = mysql_query("SELECT COUNT(id) FROM forum_categorieen WHERE id = ".$_GET['catid']);
  3.  
  4. if (mysql_result($qCheckCat, 0) == 0) {
  5.  
  6. } else {
  7.  
  8. }
  9.  
  10. ?>
Offline Voldemort - 03/06/2005 21:03
Avatar van Voldemort PHP ver gevorderde Ok, een domme fout, alles werkt nu. Bedankt voor jullie hulp.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.225s