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

Optimización de una consulta simple en dos tablas grandes

Hasta donde yo sé, la mejor manera de hacer una consulta como esa "rápidamente" es crear una tabla de resumen que rastree las vistas de páginas de amigos por página por creador.

Probablemente querrá mantenerlo actualizado con disparadores. Entonces su agregación ya está hecha por usted, y es una consulta simple para obtener las páginas más vistas. Puede asegurarse de tener los índices adecuados en la tabla de resumen, de modo que la base de datos ni siquiera tenga que ordenarse para obtener los más vistos.

Las tablas de resumen son la clave para mantener un buen rendimiento para las consultas de tipo agregación en entornos de lectura mayoritaria. Usted hace el trabajo por adelantado, cuando ocurren las actualizaciones (poco frecuentes) y luego las consultas (frecuentes) no tienen que hacer ningún trabajo.

Si sus estadísticas no tienen que ser perfectas, y sus escrituras son bastante frecuentes (lo que probablemente sea el caso de algo como las vistas de página), puede agrupar las vistas en la memoria y procesarlas en segundo plano, para que los amigos no no tienen que tomar el golpe de mantener la tabla de resumen actualizada, a medida que ven las páginas. Esa solución también reduce la contención en la base de datos (menos procesos que actualizan la tabla de resumen).