sql >> Base de Datos >  >> RDS >> Mysql

Tablas de datos agregados

Esta funcionalidad estaría mejor servida por una característica llamada vista materializada , del que MySQL desafortunadamente carece. Podría considerar migrar a un sistema de base de datos diferente, como PostgreSQL.

Hay formas de emular vistas materializadas en MySQL utilizando procedimientos almacenados, disparadores y eventos. Crea un procedimiento almacenado que actualiza los datos agregados. Si los datos agregados deben actualizarse en cada inserción, puede definir un disparador para llamar al procedimiento. Si los datos deben actualizarse cada pocas horas, puede definir un Evento del programador de MySQL o un trabajo cron para hacerlo.

Existe un enfoque combinado, similar a su opción 3, que no depende de las fechas de los datos de entrada; imagine lo que sucedería si algunos datos nuevos llegan un momento demasiado tarde y no se incluyen en la agregación. (Es posible que no tenga este problema, no lo sé). Podría definir un activador que inserte nuevos datos en un "registro pendiente" y hacer que el procedimiento actualice la tabla agregada solo desde el registro pendiente.

Todos estos métodos se describen en detalle en este artículo:http://www.fromdual.com/ mysql-vistas-materializadas