SQL_CALC_FOUND_ROWS
só é útil se você estiver usando um LIMIT
cláusula, mas ainda deseja saber quantas linhas teriam sido encontradas sem o LIMIT
. Pense em como isso funciona:
SELECT SQL_CALC_FOUND_ROWS * FROM Users;
Você está forçando o banco de dados a recuperar/analisar TODOS os dados na tabela e, em seguida, você os joga fora. Mesmo que você não vá recuperar nenhuma das linhas, o servidor de banco de dados ainda começará a extrair dados reais do disco supondo que você deseja esses dados.
Em termos humanos, você comprou todo o conteúdo da super mercearia, mas jogou tudo fora, exceto o pacote de chicletes do carrinho ao lado do caixa.
Considerando que, fazendo:
SELECT count(*) FROM users;
permite que o mecanismo de banco de dados saiba que, embora você queira saber quantas linhas existem, não se importará com os dados reais. Na maioria dos DBMS inteligentes, o mecanismo pode recuperar essa contagem dos metadados da tabela ou uma simples execução pelo índice de chave primária da tabela, sem nunca tocar nos dados da linha no disco.