sql >> Base de Datos >  >> RDS >> Mysql

PDO::rowCount VS COUNT(*)

1ra pregunta:

Usando el conteo COUNT() , internamente el servidor (MySQL) procesará la solicitud de manera diferente.

Al hacer COUNT() , el servidor (MySQL) solo asignará memoria para almacenar el resultado del conteo.

Al usar $row=$SQL->rowCount(); el servidor (Apache/PHP) procesará todo el conjunto de resultados, asignará memoria para todos esos resultados y pondrá el servidor en modo de recuperación, lo que involucra muchos detalles diferentes, como el bloqueo.

Tenga en cuenta que PDOStatement::rowCount() devuelve el número de filas afectadas por la última instrucción, no el número de filas devueltas. Si la última instrucción SQL ejecutada por el PDOStatement asociado era un SELECT declaración, algunas bases de datos pueden devolver el número de filas devueltas por esa declaración. Sin embargo, este comportamiento no está garantizado para todas las bases de datos y no debe confiarse en él para aplicaciones portátiles.

En mi análisis, si usa COUNT() , el proceso se dividiría en MySQL y PHP, mientras que si usa $row=$SQL->rowCount(); , el procesamiento sería más para PHP.

Por lo tanto COUNT() en MySQL es más rápido.

Segunda pregunta:

COUNT(*) es mejor que COUNT(id) .

Explicación:

El count(*) La función en mysql está optimizada para encontrar el recuento de valores. El uso de comodines significa que no obtiene todas las filas. Solo encuentra el conteo. Así que usa count(*) siempre que sea posible.

Fuentes: