Pergunta

Eu preciso exibir muitas páginas de notícias em um site.
Devo fazer a paginação na consulta db usando limite ou fazê-lo no meu script php depois de obter todos os resultados?

Foi útil?

Solução

Use limite em SQL! Toda vez!

Caso contrário, você está jogando em torno de consideravelmente mais dados do que você precisa, o que torna seus scripts desnecessariamente lento, e vai levar a problemas de escalabilidade como a quantidade de dados em suas tabelas aumenta.

Limite é seu amigo!

Outras dicas

Use limite -. Você não quer massas de transferência de dados a partir do banco de dados para o mecanismo de script, se você pode evitá-lo

Se você só quer trabalhar com um DBMS que suportam isso do que fazê-lo sobre os DBMS. Se você quiser apoiar outros DBMS no futuro, então ad uma camada entre que pode lidar com dependendo do SGBD atuais.

Você pode usar algumas bibliotecas existentes para ajudá-lo:

Pear :: Pager pode ajudar com a saída, e limitar o tráfego de banco de dados para apenas o que você precisa, você pode usar um invólucro fornecido nos exemplos que vêm com ele.

Aqui está um tutorial eu pesquisei que tem tudo isso ...

Além de usar LIMIT, eu sugiro usar uma cláusula WHERE explícita para definir o deslocamento, e ordenar os resultados na coluna. Por exemplo:

--- First page (showing first 50 records)
SELECT * FROM people ORDER BY id LIMIT 50
--- Second page
SELECT * FROM people WHERE id > 50 ORDER BY id LIMIT 50

A limita ainda mais o número de linhas retornados para aqueles dentro da gama desejada. Usando a abordagem WHERE (em oposição a uma cláusula LIMIT com um separado offset, por exemplo LIMIT 50,50) permite-lhe lidar eficazmente com paginação por meio de registros com outras teclas naturais, por exemplo, em ordem alfabética pelo nome, ou por ordem de data.

Pessoalmente, gostaria de usar a consulta para fazê-lo. Obviamente, isso pode mudar se o seu trato com AJAX e tal, mas apenas fazendo um limite básico na consulta e produzir os resultados é simples e eficiente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top