qual é a melhor maneira de obter um número aproximado de resultados de pesquisa de uma consulta?
-
03-07-2019 - |
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.
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.