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: