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

Como contar todos os registros, mas apenas recuperar (LIMIT) um número específico para exibição?


O MySQL tem algum suporte especial para esse tipo de coisa. Primeiro, inclua SQL_CALC_FOUND_ROWS em seu SELECT:
SELECT SQL_CALC_FOUND_ROWS *
FROM Badges
WHERE UID = '$user'
ORDER by Date DESC
LIMIT 10 -- Or whatever

Em seguida, retire suas linhas e imediatamente olhe para FOUND_ROWS() assim:
SELECT FOUND_ROWS()

para obter o número de linhas que corresponderam à sua consulta original sem considerar a cláusula LIMIT.

Isso é específico do MySQL, mas deve ser um pouco mais rápido do que fazer duas consultas.