count(*)
Voldemort - 29/05/2005 17:58
PHP 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
ElCheapo - 29/05/2005 18:01 (laatste wijziging 29/05/2005 18:01)
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.
Voldemort - 29/05/2005 18:02
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.
Tuinstoel - 29/05/2005 18:48
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.
$sQuery = "SELECT * FROM `tabel`";
if(!$rResource = @mysql_query($sQuery))
{ /* failed */ }
else
{
echo mysql_num_rows($rResource).' records in tabel.';
}
$sQuery = "SELECT * FROM `tabel`" ;
{ /* failed */ }
else
{
}
ElCheapo - 29/05/2005 18:49
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.
Gerard - 29/05/2005 21:07
Ouwe rakker
Count(1) ligt gelijk aan Count(*)?
Tuinstoel - 30/05/2005 14:33
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.
ElCheapo - 30/05/2005 15:25
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.
prorsoft - 30/05/2005 19:16 (laatste wijziging 30/05/2005 19:17)
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
Voldemort - 01/06/2005 17:48
PHP ver gevorderde
Dus jullie zeggen mij:
Aantal: count()
Aantal + data: mysql_num_rows
Data: gewone query
Zo is het dus het best?
Legolas - 01/06/2005 17:50
Onbekend
Ja, zo is het het best.
Voldemort - 01/06/2005 21:53 (laatste wijziging 01/06/2005 22:08)
PHP ver gevorderde
<?php
$catid = $_GET[catid];
$bestaat_cat = "SELECT COUNT(`id`) FROM `forum_categorieen` WHERE `id`='$catid'";
$result_bestaat_cat = mysql_query($bestaat_cat);
if(empty($catid) || $result_bestaat_cat == "0")
{
echo "Deze categorie bestaat niet.";
}
?>
<?php
$catid = $_GET [ catid] ;
$bestaat_cat = "SELECT COUNT(`id`) FROM `forum_categorieen` WHERE `id`='$catid '" ;
if ( empty ( $catid ) || $result_bestaat_cat == "0" ) {
echo "Deze categorie bestaat niet." ; }
?>
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?
nemesiskoen - 01/06/2005 22:09 (laatste wijziging 01/06/2005 22:09)
PHP expert
integer buiten quotes mss?
<?php
if(empty($catid) || $result_bestaat_cat == 0)
{
echo "Deze categorie bestaat niet.";
}
?>
<?php
if ( empty ( $catid ) || $result_bestaat_cat == 0 ) {
echo "Deze categorie bestaat niet." ; }
?>
Frederic - 01/06/2005 23:10 (laatste wijziging 01/06/2005 23:10)
PHP ver gevorderde
En dit?
<?php
$catid = $_GET[catid];
$bestaat_cat = "SELECT COUNT(`id`) FROM `forum_categorieen` WHERE `id`='$catid'";
if (!$result_bestaat_cat = mysql_query($bestaat_cat))
{
echo "Shit, de fout zit hoger!";
}
if(empty($catid) || ($result_bestaat_cat == "0"))
{
echo "Deze categorie bestaat niet.";
}
?>
<?php
$catid = $_GET [ catid] ;
$bestaat_cat = "SELECT COUNT(`id`) FROM `forum_categorieen` WHERE `id`='$catid '" ;
{
echo "Shit, de fout zit hoger!" ; }
if ( empty ( $catid ) || ( $result_bestaat_cat == "0" ) ) {
echo "Deze categorie bestaat niet." ; }
?>
Gerard - 02/06/2005 08:32
Ouwe rakker
Je doet een COUNT query maar vergeet om het resultaat goed op te halen?
<?php
$qCheckCat = mysql_query("SELECT COUNT(id) FROM forum_categorieen WHERE id = ".$_GET['catid']);
if (mysql_result($qCheckCat, 0) == 0) {
} else {
}
?>
<?php
$qCheckCat = mysql_query ( "SELECT COUNT(id) FROM forum_categorieen WHERE id = " . $_GET [ 'catid' ] ) ;
} else {
}
?>
Voldemort - 03/06/2005 21:03
PHP ver gevorderde
Ok, een domme fout, alles werkt nu. Bedankt voor jullie hulp.
Gesponsorde links
Dit onderwerp is gesloten .