qual é a melhor maneira de obter um número aproximado de resultados de pesquisa de uma consulta?

StackOverflow https://stackoverflow.com/questions/600972

Pergunta

para descrevê-lo um pouco mais, se eu tenho um mapa de imagem de uma região que, quando clicado, uma consulta é realizada para obter mais informações sobre essa região.
meu cliente quer me exibir um número aproximado de resultados da pesquisa, enquanto pairando sobre esse mapa imagem região.
meu problema é como faço para cache? ou obter esse número sem esgotar fortemente recursos de memória do meu servidor?
btw im usando php e mysql se isso é uma informação necessária.

Foi útil?

Solução

pode executar periodicamente a consulta e, em seguida, armazenar os resultados (por exemplo, em uma tabela diferente).

Os resultados não seriam absolutamente up-to-date, mas seria uma boa aproximação e reduziria a carga sobre o servidor.

Outras dicas

MySQL pode dar-lhe o número aproximado de linhas que seriam retornados por sua consulta, sem realmente executar a consulta. Isto é o que EXPLICAR sintaxe é para.

Você executar a consulta com 'explicar' antes do 'SELECT', e em seguida, multiplicar todos os resultados na coluna linhas.

A precisão é altamente variável. Ele pode funcionar com alguns tipos de consultas, mas será inútil sobre os outros. Ele faz uso de estatísticas sobre seus dados que otimizador do MySQL mantém.

Nota:. Utilizando ANALYZE TABLE na tabela periódica (ou seja, uma vez por mês) pode ajudar a melhorar a precisão dessas estimativas

Você pode criar uma outra tabela com o ID de uma das regiões, e em seguida, criar um script que executa mais de todas as regiões de cada vez lenta (noite por exemplo) e preenche esta tabela extra com os dados.

Então quando você passa você começa a ID dessa nova tabela, e sua, no máximo, um dia de idade.

O problema com que pode ser que você não tem um tempo lento ou que o run-through que é feito durante a noite leva muito tempo e é muito pesado processo.

Editar para o seu comentário.

Tome uma grande região ou país, se você puder, faça uma consulta daquela região dentro do seu navegador SQL de escolha e confira o tempo que seria necessário.

Se é para quanto você pode distribuí-lo tão certos países será executado em determinadas horas, os países pequenos juntos e grandes países sozinho em algum período.

é sua preocupação de que você não quer ir para o banco de dados para obter essa informação em tudo quando o evento rolo de sempre ocorre, ou é que você acha que a consulta será muito lento e você deseja que as informações do banco de dados , mas mais rápido?

Se você tiver uma consulta lenta, você pode ajustá-lo, ou usar algumas das outras sugestões já dadas.

Como alternativa, e para evitar um banco de dados atingiu por completo, parece que você tem um número finito de regiões neste mapa, e você pode executar uma consulta periodicamente para todas as regiões e manter os números na memória.

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