MySQL/PHP: az alábbiak közül melyik a jobb megoldás a sorok megszámolásához egy táblában (példák a leírásban)?
Az érdekelne, hogy a két verzió közül melyik a gyorsabb? Ha a lekérdezés nagy méretű táblából történik, és telepakolom mindenféle lekérési feltételekkel (WHERE meg HAVING), akkor melyik a jobb megoldás?
1. verzió:
$query = "SELECT COUNT(*) AS mennyi FROM autok";
$mysql_query = mysqli_query($conn, $query);
while($row = mysqli_fetch_array($mysql_query)) {
echo "sorok szama: " . $row["mennyi"];
}
2. verzió
$query = "SELECT * FROM autok";
echo "sorok szama: " . mysqli_num_rows(mysqli_query($conn, $query));
Természetesen az 1. verzió. Ugyanis ilyankor csak az aggregáló függvény eredményét kapod meg, tehát a MySQL sem fog a konkrét adatokkal foglalkozni, csak visszaadja, hogy hány sor van.
Míg a 2. megoldásnál az adatokat is kiolvassa és visszaadja, ami memóriát és számítási kapacitást igényel.
"Tovább finomíthatod a dolgot, ha COUNT(*) helyett a tábla kulcsát használod - például: COUNT(id)."
Sokáig én is azt hittem, de nem.
Sőt, MyISAM motor esetén kifejezetten nem, mert a rekordok számát folyamatosan tárolja a motor, és azonnal vissza tudja adni, a count(id)-t meg számolni kell.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!