Pergunta

É uma daquelas coisas que parece ter um estranho curva onde mais eu penso sobre isso, mais faz sentido.Até certo ponto, é claro.E então não faz sentido para mim em tudo.

Cuidados para me esclarecer?

Foi útil?

Solução

Porque na maioria dos casos, você tem que ordenar os seus resultados.Por exemplo, quando você pesquisa no Google, você pode visualizar apenas até 100 páginas de resultados.Eles não se preocupam classificação por página-classificar além de 1000 sites para determinada palavra-chave (ou combinação de palavras-chave).

A paginação é rápido.A classificação é lento.

Outras dicas

Lubos é certo, o problema não é o fato de que você está de paginação (o que leva uma ENORME quantidade de dados fora do fio), mas que você precisa descobrir o que realmente está acontecendo na página..

O fato de que você precisa para a página implica que há uma grande quantidade de dados.Uma grande quantidade de dados leva muito tempo para classificar :)

Esta é realmente uma pergunta vaga.Nós precisamos de um exemplo concreto para obter uma melhor idéia do problema.

Esta pergunta parece muito bem coberto, mas eu vou adicionar um pouco de algo MySQL específicos como ele pega um monte de pessoas:

Evitar o uso de SQL_CALC_FOUND_ROWS.A menos que o conjunto de dados é trivial, contando partidas e recuperação de x quantidade de jogos em duas consultas separadas vai ser muito mais rápido.(Se é trivial, você quase não vai notar a diferença de qualquer forma.)

Eu pensei que você quis dizer a paginação da página impressa - que é onde eu cortei os meus dentes.Eu estava indo para introduzir um grande monólogo sobre a coleta de todo o conteúdo para a página, posicionamento (um grande número de regras aqui, constrait motores são bastante úteis) e justificação...mas, aparentemente, você estava falando sobre o processo de organização de informações em páginas da web.

Para que, eu acho acessos ao banco de dados.Acesso ao disco é lento.Uma vez que você tem isso na memória, a classificação é baixo.

É claro que a classificação em um aleatório consulta demora algum tempo, mas se você estiver tendo problemas com o mesmo paginado consulta a ser utilizado regularmente, haverá algo de errado com a instalação do banco de dados (impropriamente de indexação/nenhum, muito pouco de memória, etc.Eu não sou um db-gestor) ou você está fazendo a paginação seriamente errado:

Terrivelmente errado:exemplo:fazendo select * from hugetable where somecondition; em uma matriz obter a contagem de página com a matriz.comprimento de escolher os índices de referência e dicard matriz - em seguida, repetir este procedimento para cada página...Isso que eu chamo de seriamente errado.

A melhor solução de duas consultas:um ficando somente a contagem, em seguida, o outro a obtenção de resultados através de limit e offset.(Alguns proprietários, fora do padrão do sql server pode ter uma opção de consulta, sei lá)

A má solução pode funcionar muito bem em pequenas mesas (na verdade não é impensável que ele é mais rápido em tabelas muito pequenas, porque a sobrecarga de fazer duas consultas é maior do que a obtenção de todas as linhas em uma única consulta.Eu não estou dizendo que é então...), mas assim que o banco de dados começa a crescer os problemas se tornam evidentes.

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