1. otázka:
Pomocí count COUNT()
, interně server (MySQL) zpracuje požadavek jinak.
Při provádění COUNT()
, server (MySQL) pouze alokuje paměť pro uložení výsledku počítání.
Při použití $row=$SQL->rowCount();
server (Apache/PHP) zpracuje celou sadu výsledků, alokuje paměť pro všechny tyto výsledky a uvede server do režimu načítání, který zahrnuje spoustu různých detailů, jako je zamykání.
Vezměte na vědomí, že PDOStatement::rowCount()
vrátí počet řádků ovlivněných posledním příkazem, nikoli počet vrácených řádků. Pokud je poslední příkaz SQL proveden přidruženým PDOStatement
byl SELECT
některé databáze mohou vrátit počet řádků vrácených tímto příkazem. Toto chování však není zaručeno pro všechny databáze a nemělo by se na něj spoléhat u přenosných aplikací.
V mé analýze, pokud použijete COUNT()
, proces by byl rozdělen na MySQL i PHP, zatímco pokud použijete $row=$SQL->rowCount();
, zpracování by bylo spíše pro PHP.
Proto COUNT()
v MySQL je rychlejší.
2. otázka:
COUNT(*)
je lepší než COUNT(id)
.
Vysvětlení:
count(*)
funkce v mysql je optimalizována pro nalezení počtu hodnot. Použití zástupných znaků znamená, že nenačte každý řádek. Najde pouze počet. Použijte tedy count(*)
kdekoli je to možné.
Zdroje: