Pregunta

Tengo una idea todavía tengo que poner en práctica, porque tengo algo de miedo me puede ladrando al árbol equivocado ... principalmente porque buscar en Google sobre el tema vuelve tan pocos resultados.

Básicamente tengo algunas consultas SQL que son lentos, en gran parte debido a que tienen subconsultas que consumen mucho tiempo. Por ejemplo, podrían hacer cosas como "dame un recuento de todas las bicicletas que son rojas y montado por niños entre las edades de 10-15". Esto es caro, ya que chapotea a través de todas las bicicletas, pero el resultado final es un solo número. Y, en mi caso, yo realmente no necesito ese número a ser del 100% hasta la fecha.

La solución definitiva para los problemas de este tipo parece ser la aplicación de un motor basado en OLAP para pre-caché de estas permutaciones. Sin embargo, en mi caso no estoy realmente tratando de desmenuzar los datos alrededor de una tonelada de métricas, y me encantaría no tener que complicar la arquitectura con otro proceso / almacén de datos en ejecución.

Así que ... mi idea fue básicamente memoizing estos sub consultas en la base de datos. Podría tener una tabla llamada "BicycleStatistics" y podría almacenar la salida de ese sub consulta anterior como un par de valores de nombre de sus entradas y salidas.

Nombre Ex: "c_red_g_male_a_10-15" Valor: 235

Y tener un mecanismo que memoizes esos valores a la tabla como se ejecutan las consultas.

¿Alguien ha estado en esta situación y trató algo similar? La razón creo que una solución de este tipo es valiosa sobre el "lanzar una gran cantidad de memoria RAM en su base de datos y dejar que la base de datos de manejarlo" es (A) mi base de datos es más grande que la cantidad de RAM puedo tirar cómodamente en ella, y ( B) la base de datos va a garantizar consigo el número correcto exacta para estas estadísticas, y mi gran victoria, por encima, es que yo estoy bien con los números de ser un día o dos fuera de fecha.

Gracias por cualquier pensamientos / retroalimentación.

Tom

¿Fue útil?

Solución

vistas son una forma de lograr este requisito materializadas, si su DBMS compatible con ellas.

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