¿Cuál es la mejor manera de obtener un número aproximado de resultados de búsqueda de una consulta?

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

Pregunta

para describirlo un poco más, si tengo un mapa de imagen de una región que al hacer clic, se realiza una consulta para obtener más información sobre esa región.

mi cliente quiere que muestre un número aproximado de resultados de búsqueda mientras se desplaza sobre el mapa de imagen de esa región.

mi problema es ¿cómo me caché? ¿O obtener ese número sin agotar mucho los recursos de memoria de mi servidor?

btw im usando php y mysql si esa es una información necesaria.

¿Fue útil?

Solución

Puede ejecutar la consulta periódicamente y luego almacenar los resultados (por ejemplo, en una tabla diferente).

Los resultados no serían absolutamente actualizados, pero serían una buena aproximación y reducirían la carga en el servidor.

Otros consejos

MySQL puede darle el número aproximado de filas que devolvería su consulta, sin ejecutar la consulta. Para esto es la sintaxis de EXPLAIN.

Ejecuta la consulta con 'EXPLICAR' antes de 'SELECCIONAR', y luego multiplica todos los resultados en la columna de filas.

La precisión es muy variable. Puede funcionar con algunos tipos de consultas, pero ser inútil en otros. Hace uso de estadísticas sobre sus datos que mantiene el optimizador de MySQL.

Nota: el uso de ANALIZAR TABLA en la tabla periódicamente (es decir, una vez al mes) puede ayudar a mejorar la precisión de estas estimaciones.

Puede crear otra tabla con los ID de las regiones, y luego crear una secuencia de comandos que se ejecute en todas las regiones en un momento lento (noche, por ejemplo) y rellene esta tabla adicional con los datos.

Luego, cuando pasas el ratón, obtienes el ID de esta nueva tabla y, como máximo, tiene un día de antigüedad.

El problema con eso podría ser que no tienes un tiempo lento o que la ejecución que se realiza por la noche lleva mucho tiempo y es muy pesada.

EDITAR a tu comentario.

Tome una gran región o país, si puede, haga una consulta de esa región en el navegador de su elección de SQL y revise el tiempo que tomaría.

Si es demasiado, podría distribuirlo para que ciertos países se ejecuten a ciertas horas, países pequeños juntos y países grandes solo en algún período.

¿Le preocupa que no quiera ir a la base de datos para obtener esta información cuando ocurra el evento, o si cree que la consulta será demasiado lenta y desea obtener la información de la base de datos? , pero mas rapido?

Si tiene una consulta lenta, puede ajustarla o usar algunas de las otras sugerencias que ya se han dado.

Alternativamente, y para evitar un golpe de base de datos por completo, parece que tiene un número finito de regiones en este mapa, y puede ejecutar una consulta periódicamente para todas las regiones y mantener los números en la memoria.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top