Första frågan:
Använder count COUNT()
, internt kommer servern (MySQL) att behandla begäran på ett annat sätt.
När du gör COUNT()
, kommer servern (MySQL) endast att allokera minne för att lagra resultatet av räkningen.
När du använder $row=$SQL->rowCount();
servern (Apache/PHP) kommer att bearbeta hela resultatuppsättningen, allokera minne för alla dessa resultat och sätta servern i hämtningsläge, vilket involverar många olika detaljer, såsom låsning.
Notera att PDOStatement::rowCount()
returnerar antalet rader som påverkas av den sista satsen, inte antalet returnerade rader. Om den sista SQL-satsen exekveras av den associerade PDOStatement
var en SELECT
kan vissa databaser returnera antalet rader som returneras av den satsen. Detta beteende är dock inte garanterat för alla databaser och bör inte förlitas på för bärbara applikationer.
På min analys, om du använder COUNT()
, skulle processen delas upp till både MySQL och PHP medan om du använder $row=$SQL->rowCount();
, skulle bearbetningen vara mer för PHP.
Därför COUNT()
i MySQL är snabbare.
Andra frågan:
COUNT(*)
är bättre än COUNT(id)
.
Förklaring:
count(*)
funktion i mysql är optimerad för att hitta antalet värden. Att använda jokertecken betyder att den inte hämtar varje rad. Det bara hitta räkningen. Så använd count(*)
där det är möjligt.
Källor: