MārisL Posted December 7, 2007 Report Share Posted December 7, 2007 <?php include "_inc_/config.php"; $result = mysql_query('SELECT COUNT(*) FROM lietotaji'); while($row = mysql_fetch_array($result)) { echo "COUNT(*)"; } ?> Kā tur īsti vajadzēja izvilkt ārā to skaitli? Nepieciešams lai būtu Kopā reģistrējušies: tas_skaitlis Link to comment Share on other sites More sharing options...
andrisp Posted December 7, 2007 Report Share Posted December 7, 2007 list($count) = mysql_fetch_row($result); Link to comment Share on other sites More sharing options...
ray Posted December 7, 2007 Report Share Posted December 7, 2007 kas izpildās ātrāk? skaits = 0; $result = mysql_query('SELECT COUNT(*) FROM lietotaji'); while($row = mysql_fetch_array($result)) { skaits++; } vai list($count) = mysql_fetch_row($result); Link to comment Share on other sites More sharing options...
andrisp Posted December 7, 2007 Report Share Posted December 7, 2007 Nezinu, kurš ātrāk, bet tas pirmais variants ir patizls. Link to comment Share on other sites More sharing options...
bubu Posted December 7, 2007 Report Share Posted December 7, 2007 ray - tie abi divi koda gabali tev dara divas dažādas lietas. Un tādā gadījumā salīdzināt ātrumus ir neloģiski. Link to comment Share on other sites More sharing options...
marcis Posted December 7, 2007 Report Share Posted December 7, 2007 ja sapratu pareizi jautājuma jēgu, tad sanāk šādi: <?php include "_inc_/config.php"; $result = mysql_query('SELECT COUNT(*) AS c FROM lietotaji'); while($row = mysql_fetch_array($result)) { echo $row['c']; } ?> Link to comment Share on other sites More sharing options...
gurkjis Posted December 7, 2007 Report Share Posted December 7, 2007 īsakais variants: $row = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM lietotaji")); echo $row[0]; Link to comment Share on other sites More sharing options...
andrisp Posted December 7, 2007 Report Share Posted December 7, 2007 marcis, es vispār nesaprotu, kāpēc tur būtu jāizmanto while. Link to comment Share on other sites More sharing options...
marcis Posted December 8, 2007 Report Share Posted December 8, 2007 while, protams, tikai tad, kad skaita, nosakot vismaz vienu parametru, citādi GROUP BY un bez while Link to comment Share on other sites More sharing options...
andrisp Posted December 8, 2007 Report Share Posted December 8, 2007 Nesapratu īsti. Ja izmanto GROUP BY, tad tieši vajadzētu while, lai dabūtu visus COUNT rezultātus. Ja nav GROUP BY, tad atgriezsts tiks tikai viens rezultāts un tam while nevajag. Link to comment Share on other sites More sharing options...
marcis Posted December 8, 2007 Report Share Posted December 8, 2007 ui, jā. mana uzmanības kļūda Link to comment Share on other sites More sharing options...
NiTrino Posted December 8, 2007 Report Share Posted December 8, 2007 (edited) $skaits = mysql_num_rows(mysql_query('SELECT id FROM lietotaji')); Edited December 8, 2007 by NiTrino Link to comment Share on other sites More sharing options...
andrisp Posted December 8, 2007 Report Share Posted December 8, 2007 NiTrino, imo, ļoti neoptimāls veids. Link to comment Share on other sites More sharing options...
NiTrino Posted December 8, 2007 Report Share Posted December 8, 2007 (edited) Nu, kā uz to paskatās. Visoptimālākais kods - bez koda. Bet ja nopietni, ja lapai onlainā 500 useri un 100 000 reģistrēti, tad protams. Ja kāds reizi nedēļā ielien un 100 reģistrēti, tad nav svarīgi. Pirmajam gadījumam es taisu cronā ģenerētu PHP inklūdi $TOTAL_USERS = x; ja baigi vajag to lapā rādīt. Viss ir relatīvi ;) Bet ja strikti - ok, SELECT COUNT(id) FROM table būs ātrāk, jo tajā gadījumā netiek skaitīti visi ieraksti, bet mysql vēršas pie indeksa. Edited December 8, 2007 by NiTrino Link to comment Share on other sites More sharing options...
bubu Posted December 8, 2007 Report Share Posted December 8, 2007 Ja id ir pirmārā atslēga, tad defaultajam MyISAM tabulas tipam (nezinu kā citiem, InnoDB toč tā nav) MySQL vispār nevēršas ne pie kāda indeksa, bet vienkārši atdod skaitli ar ierakstu skaitu. Šis skaitlis glabājas atsevišķi - iznāk, ka nevajag skriet cauri nekādiem tabulas ierakstiem. Tas nozīmē, ka darbības sarežģītība ir O(1) - konstante. Taču tavā SELECT id FROM ... gadījumā sarežģītība ir lineāra - O(n), jo nākas skriet cauri visiem tabulas ierakstiem. Link to comment Share on other sites More sharing options...
Recommended Posts