ORDER BY y usar vistas materializadas.
Veremos cómo estos enfoques pueden reducir los tiempos de las consultas de segundos a milisegundos.
Optimizar las claves de ORDER BY
project y subproject.
En ese caso, es buena idea añadirlas a la clave de ordenación, junto con la columna time, ya que también consultamos por tiempo.
Vamos a crear otra versión de la tabla con los mismos tipos de columna que wikistat, pero ordenada por (project, subproject, time).
| Consulta | (time) | (project, subproject, time) |
|---|---|---|
| 2.381 sec | 1.660 sec | |
| 2.148 sec | 0.058 sec | |
| 2.192 sec | 0.012 sec | |
| 2.968 sec | 0.010 sec |
Vistas materializadas
Crear vista materializada
Carga retroactiva de la tabla de destino
wikistat, por lo que debemos realizar una carga retroactiva.
La forma más sencilla de hacerlo es usar una sentencia INSERT INTO SELECT para insertar directamente en la tabla de destino de la vista materializada usando la consulta SELECT de la vista (transformación):
- Crear una tabla temporal con un Null table engine
- Conectar a esa tabla temporal una copia de la vista materializada que se usa normalmente
- Usar una consulta
INSERT INTO SELECTpara copiar todos los datos del conjunto de datos sin procesar a esa tabla temporal - Eliminar la tabla temporal y la vista materializada temporal.
wikistat_backfill y escribir en wikistat_top
wikistat_backfill a partir de la tabla wikistat inicial: