MārisL Posted December 7, 2007 Report 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
andrisp Posted December 7, 2007 Report Posted December 7, 2007 list($count) = mysql_fetch_row($result);
ray Posted December 7, 2007 Report 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);
andrisp Posted December 7, 2007 Report Posted December 7, 2007 Nezinu, kurš ātrāk, bet tas pirmais variants ir patizls.
bubu Posted December 7, 2007 Report 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.
marcis Posted December 7, 2007 Report 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']; } ?>
gurkjis Posted December 7, 2007 Report Posted December 7, 2007 īsakais variants: $row = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM lietotaji")); echo $row[0];
andrisp Posted December 7, 2007 Report Posted December 7, 2007 marcis, es vispār nesaprotu, kāpēc tur būtu jāizmanto while.
marcis Posted December 8, 2007 Report Posted December 8, 2007 while, protams, tikai tad, kad skaita, nosakot vismaz vienu parametru, citādi GROUP BY un bez while
andrisp Posted December 8, 2007 Report 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.
NiTrino Posted December 8, 2007 Report Posted December 8, 2007 (edited) $skaits = mysql_num_rows(mysql_query('SELECT id FROM lietotaji')); Edited December 8, 2007 by NiTrino
NiTrino Posted December 8, 2007 Report 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
bubu Posted December 8, 2007 Report 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.
Recommended Posts