Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PDO::rowCount VS COUNT(*)


1ª pergunta:

Usando contagem COUNT() , internamente o servidor (MySQL) processará a solicitação de forma diferente.

Ao fazer COUNT() , o servidor (MySQL) apenas alocará memória para armazenar o resultado da contagem.

Ao usar $row=$SQL->rowCount(); o servidor (Apache/PHP) processará todo o conjunto de resultados, alocará memória para todos esses resultados e colocará o servidor no modo de busca, que envolve muitos detalhes diferentes, como bloqueio.

Observe que PDOStatement::rowCount() retorna o número de linhas afetadas pela última instrução, não o número de linhas retornadas. Se a última instrução SQL executada pelo PDOStatement associado era um SELECT instrução, alguns bancos de dados podem retornar o número de linhas retornadas por essa instrução. No entanto, esse comportamento não é garantido para todos os bancos de dados e não deve ser considerado para aplicativos portáteis.

Na minha análise, se você usar COUNT() , o processo seria dividido para MySQL e PHP enquanto se você usar $row=$SQL->rowCount(); , o processamento seria mais para PHP.

Portanto COUNT() no MySQL é mais rápido.

2ª pergunta:

COUNT(*) é melhor que COUNT(id) .

Explicação:

A count(*) função no mysql é otimizada para encontrar a contagem de valores. Usar curinga significa que ele não busca todas as linhas. Ele só encontra a contagem. Então use count(*) qualquer lugar possível.

Fontes: