ORDER BY et l’utilisation de vues matérialisées.
Nous verrons comment ces approches peuvent ramener le temps d’exécution des requêtes de quelques secondes à quelques millisecondes.
Optimiser les clés ORDER BY
project et subproject.
Dans ce cas, il est judicieux de les ajouter à la clé de tri, ainsi que la colonne time, puisque nos requêtes filtrent aussi sur le temps.
Créons une autre version de la table avec les mêmes types de colonnes que wikistat, mais triée selon (project, subproject, time).
| Requête | (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 |
Vues matérialisées
Créer une vue matérialisée
Alimentation rétroactive de la table de destination
wikistat ; nous devons donc effectuer une alimentation rétroactive.
Le moyen le plus simple de procéder consiste à utiliser une instruction INSERT INTO SELECT pour insérer directement dans la table cible de la vue matérialisée en utilisant la requête SELECT de la vue (transformation) :
- Créer une table temporaire avec un Null table engine
- Connecter une copie de la vue matérialisée habituellement utilisée à cette table temporaire
- Utiliser une requête
INSERT INTO SELECTpour copier toutes les données du jeu de données brut dans cette table temporaire - Supprimer la table temporaire et la vue matérialisée temporaire.
wikistat_backfill et écrire dans wikistat_top
wikistat_backfill à partir de la table initiale wikistat :