ORDER BY somme DESC
LIMIT 1;
SET v_i = v_i + 1;
END LOOP;
END |
DELIMITER ;
Le test
Il n'y a plus maintenant qu'à exécuter les trois procédures pour voir leur temps d'exécution.
Code : SQL
CALL test_perf_table();
CALL test_perf_vue();
CALL test_perf_vm();
Code : Console
mysql> CALL test_perf_table();
Query OK, 1 row affected (0.27 sec)
mysql> CALL test_perf_vue();
Query OK, 1 row affected (0.29 sec)
mysql> CALL test_perf_vm();
Query OK, 1 row affected (0.06 sec)
Le temps d'exécution semble équivalent pour la requête faite sur les tables directement, et sur la vue. Par contre, on a un gros
gain de performance avec la requête sur la vue matérialisée.
Voici les moyennes et écarts-types des temps d'exécution des trois procédures, pour 20 exécutions :
Sur tables Sur vue Sur vue matérialisée
Moyenne 0,266 s
0,2915 s 0,058
Écart-type 0,00503
0,00366 0,00410
La requête sur la vue est donc bien légèrement plus lente que la requête faite directement sur les tables. Mais le résultat le plus
intéressant est bien celui obtenu avec la vue matérialisée : 5 fois plus rapide que la requête sur la vue !
Par ailleurs, on peut maintenant ajouter des clés et des index à VM_Revenus_annee_especes pour accélérer encore les requêtes.
Ici, le nombre réduit de lignes fait que l'effet ne sera pas perceptible, mais sur des tables plus fournies, ça vaut la peine !
Code : SQL
ALTER TABLE VM_Revenus_annee_espece ADD INDEX (somme);
Conclusion
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
372/414
www.openclassrooms.com
LIMIT 1;
SET v_i = v_i + 1;
END LOOP;
END |
DELIMITER ;
Le test
Il n'y a plus maintenant qu'à exécuter les trois procédures pour voir leur temps d'exécution.
Code : SQL
CALL test_perf_table();
CALL test_perf_vue();
CALL test_perf_vm();
Code : Console
mysql> CALL test_perf_table();
Query OK, 1 row affected (0.27 sec)
mysql> CALL test_perf_vue();
Query OK, 1 row affected (0.29 sec)
mysql> CALL test_perf_vm();
Query OK, 1 row affected (0.06 sec)
Le temps d'exécution semble équivalent pour la requête faite sur les tables directement, et sur la vue. Par contre, on a un gros
gain de performance avec la requête sur la vue matérialisée.
Voici les moyennes et écarts-types des temps d'exécution des trois procédures, pour 20 exécutions :
Sur tables Sur vue Sur vue matérialisée
Moyenne 0,266 s
0,2915 s 0,058
Écart-type 0,00503
0,00366 0,00410
La requête sur la vue est donc bien légèrement plus lente que la requête faite directement sur les tables. Mais le résultat le plus
intéressant est bien celui obtenu avec la vue matérialisée : 5 fois plus rapide que la requête sur la vue !
Par ailleurs, on peut maintenant ajouter des clés et des index à VM_Revenus_annee_especes pour accélérer encore les requêtes.
Ici, le nombre réduit de lignes fait que l'effet ne sera pas perceptible, mais sur des tables plus fournies, ça vaut la peine !
Code : SQL
ALTER TABLE VM_Revenus_annee_espece ADD INDEX (somme);
Conclusion
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
372/414
www.openclassrooms.com
