count(*) vs mysql_num_rows(), te mit hasznalsz?
Lapozásnál te mit használsz?vagyAz első kíméli az adatbázis kezelőt(minek?) a másik pedig nem.
■
<?
$res=mysql_query("select count(*) from ....");
$count=array_pop(mysql_fetch_assoc($res));
//... lapozás ...
$res=mysql_query("select * from .... limit $first,$db ");
while($row=mysql_fetch_assoc($res))
{
....//feldolgozas
}
?>
<?
$res=mysql_query("select * from ....");
$count=mysql_num_rows($res);
//... lapozás ...
mysql_data_seek($res,$first);
for($i=0;$i<$db;$i++)
{
$row=mysql_fetch_assoc($res)
....//feldolgozas
}
?>
count()
mysql_unbuffered_query()
-t lehetne használni, azzal viszont érthető okok miatt amysql_num_rows()
nem ad használható eredményt, hiszen nem ismert a sorok száma.És a cache?
Egy nagy forgalmú híroldalnál, jellemzően ugyan azokat a lekérdezéseket kell sokszor egymás után előállítani, ezeket meg "bekeseli" a mysql, így nagy sebesség növekedés tudunk elérni, nem? Az adatbázis kezelőnek nem kell újra és újra előállítania a lekérdezést, újabb memóriafoglalásokat eszközölve tehát kit érdekel, hogy *egyszer* lefoglalta?
Ez egy nagyon speciális eset?
</csakkérdés>
pp
bekesselte?
félig
SQL_CALC_FOUND_ROWS felvetés: ezzel vigyázni kell, elég jól le tudja rontani a query futás idejét, van amikor simán jobb a külön count(*)-os query, érdemes tesztelni.
count() helyett használd