Bon! Une grosse journée pour terminer la semaine!
Aussitôt arrivé au travail aujourd'hui, je me suis mit à "taponner" sur la requête que m'a pondu Sébastien hier. J'ai du contacter Iannick Légaré pour m'assurer de l'endroit où je devais récupérer certaines données. Il me fallait en autre rajouter une jointure pour récupérer la note globale pour le cours d'un étudiant. C'est là que j'ai frappé un problème.
Premier problème: la requête était extrêmement lente à s'exécuter: je parle ici d'assez gros problèmes de performance: 18 secondes d'exécution!
Deuxième problème: 894 résultats depuis l'ajout de ma jointure au lieu des 50 que j'étais censé recevoir!
J'ai préféré, pour m'assurer de rendre la requête plus performante, la reconstruire à partir de zéro. En effet, nous faisions une jointure sur une vue, cela faisait des "full table access" à chacune des jointures... assez gourmand en performance on peut dire!
J'ai donc réussi à régler les problèmes de performance. Et pour ce qui est du deuxième problème, Éric Bédard, notre DBA, m'a expliqué comment réalisé un vrai outer join dans la clause where avec Oracle. Il faut mettre un (+) à côté du table1.id = table2.id.
Voilà! Tout fonctionne. Reste plus qu'à corriger l'affichage!
Aussitôt arrivé au travail aujourd'hui, je me suis mit à "taponner" sur la requête que m'a pondu Sébastien hier. J'ai du contacter Iannick Légaré pour m'assurer de l'endroit où je devais récupérer certaines données. Il me fallait en autre rajouter une jointure pour récupérer la note globale pour le cours d'un étudiant. C'est là que j'ai frappé un problème.
Premier problème: la requête était extrêmement lente à s'exécuter: je parle ici d'assez gros problèmes de performance: 18 secondes d'exécution!
Deuxième problème: 894 résultats depuis l'ajout de ma jointure au lieu des 50 que j'étais censé recevoir!
J'ai préféré, pour m'assurer de rendre la requête plus performante, la reconstruire à partir de zéro. En effet, nous faisions une jointure sur une vue, cela faisait des "full table access" à chacune des jointures... assez gourmand en performance on peut dire!
J'ai donc réussi à régler les problèmes de performance. Et pour ce qui est du deuxième problème, Éric Bédard, notre DBA, m'a expliqué comment réalisé un vrai outer join dans la clause where avec Oracle. Il faut mettre un (+) à côté du table1.id = table2.id.
Voilà! Tout fonctionne. Reste plus qu'à corriger l'affichage!