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: