MySQL — Função de paginação FOUND_ROWS descontinuada
Em 2017 escrevi o artigo MySQL — Paginação otimizada onde eu falava sobre o query modifier SQL_CALC_FOUND_ROWS
e a função FOUND_ROWS()
que permitia simplificar paginações.
Basicamente, você poderia fazer um select SQL_CALC_FOUND_ROWS * from table limit 15
para obter 15 registros e armazenar a quantidade de registros que essa consulta retornaria se não tivesse o LIMIT(), e depois fazer um select FOUND_ROWS()
para obter o número total de registros que foi armazenado.
select SQL_CALC_FOUND_ROWS * from table limit 15;
select FOUND_ROWS();
Em 2018 (sim, faz tempo), com o lançamento do MySQL 8.0, essa duplinha foi marcada como deprecated, com a intenção de ser removida em uma versão futura.
A justificativa para a descontinuação é de que este método de paginação seria lento, que consultas com UNION teriam problemas e que é possível obter o mesmo resultado realizando dois selects — um com o limit e outro com count() sem limit — como você pode conferir neste link https://dev.mysql.com/worklog/task/?id=12615
select * from table limit 15;
select COUNT(*) from table;
A versão 9 do MySQL foi anunciada e na sua documentação ainda consta essa duplinha lá como deprecated, ou seja, ainda não foi removida — provavelmente não quiseram quebrar a retro compatibilidade.
Então por enquanto você ainda pode manter no seu código essa dupla e atualizar para a versão mais recente que não terá problema — pelo menos não por isso. Mas caso esteja começando um projeto agora e for implementar uma busca com paginação, recomendo que não utilize o modificador e a função, para evitar retrabalho futuro.
Espero que esse conteúdo possa te ajudar!
Até a próxima!