1a domanda:
Usando il conteggio COUNT()
, internamente il server (MySQL) elaborerà la richiesta in modo diverso.
Quando si esegue COUNT()
, il server (MySQL) allocherà solo memoria per memorizzare il risultato del conteggio.
Quando si utilizza $row=$SQL->rowCount();
il server (Apache/PHP) elaborerà l'intero set di risultati, allocherà memoria per tutti quei risultati e metterà il server in modalità di recupero, che implica molti dettagli diversi, come il blocco.
Prendi nota che PDOStatement::rowCount()
restituisce il numero di righe interessate dall'ultima istruzione, non il numero di righe restituite. Se l'ultima istruzione SQL eseguita dal PDOStatement
associato era un SELECT
istruzione, alcuni database possono restituire il numero di righe restituite da tale istruzione. Tuttavia, questo comportamento non è garantito per tutti i database e non dovrebbe essere utilizzato per le applicazioni portatili.
Sulla mia analisi, se usi COUNT()
, il processo sarebbe diviso sia in MySQL che in PHP mentre se usi $row=$SQL->rowCount();
, l'elaborazione sarebbe più per PHP.
Pertanto COUNT()
in MySQL è più veloce.
2a domanda:
COUNT(*)
è migliore di COUNT(id)
.
Spiegazione:
Il count(*)
la funzione in mysql è ottimizzata per trovare il conteggio dei valori. L'utilizzo di caratteri jolly significa che non recupera tutte le righe. Trova solo il conteggio. Quindi usa count(*)
ove possibile.
Fonti: