Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
site:enseignement:licence:3i009:tmejointure [06/11/2018 18:06] hubert |
site:enseignement:licence:3i009:tmejointure [17/11/2020 00:37] (Version actuelle) hubert [Exercice préliminaire] |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
====== TME 6 Jointure ====== | ====== TME 6 Jointure ====== | ||
+ | |||
+ | /* TME pour 3I009 */ | ||
+ | |||
L'objectif de ce TME est de comprendre l'optimisation des requêtes qui contiennent des jointures. Les notions étudiées sont : | L'objectif de ce TME est de comprendre l'optimisation des requêtes qui contiennent des jointures. Les notions étudiées sont : | ||
Ligne 19: | Ligne 22: | ||
===== Préparation du TME ===== | ===== Préparation du TME ===== | ||
Lire l'énoncé de l'exercice dans le poly : TD 4 et 5: Exercice 4: INTRO pour le TME6 Jointures | Lire l'énoncé de l'exercice dans le poly : TD 4 et 5: Exercice 4: INTRO pour le TME6 Jointures | ||
+ | |||
+ | |||
+ | Télécharger l'archive du TME: [[https://nuage.lip6.fr/s/6dpYZdLAMHtdHpG|tmeJointure2020.zip]] | ||
+ | |||
+ | Se connecter à [[site:enseignement:documentation:oracle:sqlworkbench|]], charger les macros, puis ajouter les synonymes vers les tables du TME en exécutant la ligne | ||
+ | @synonymJCF | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | /* on enlève cette partie PPTI | ||
^commande^description^ | ^commande^description^ | ||
Ligne 27: | Ligne 41: | ||
| **Alt-x** my/sql-oracle //ou// **Atl-x** sql-oracle | se connecter à Oracle. Voir [[site:enseignement:documentation:oracle:connexionoracle|ConnexionOracle]] | | | **Alt-x** my/sql-oracle //ou// **Atl-x** sql-oracle | se connecter à Oracle. Voir [[site:enseignement:documentation:oracle:connexionoracle|ConnexionOracle]] | | ||
| aller sur le paragraphe contenant @baseJCF et faire Ctrl-C Ctrl-C | créer vos tables J, C, F, les index et les statistiques nécessaires à l'optimisation basée sur le coût| | | aller sur le paragraphe contenant @baseJCF et faire Ctrl-C Ctrl-C | créer vos tables J, C, F, les index et les statistiques nécessaires à l'optimisation basée sur le coût| | ||
+ | */ | ||
+ | |||
+ | |||
Les tables d'un club de sport sont : | Les tables d'un club de sport sont : | ||
Ligne 45: | Ligne 62: | ||
* **I_F_CNUM** sur F(cnum) | * **I_F_CNUM** sur F(cnum) | ||
- | Pour **afficher** les plans proposés par le SGBD et leur coût, commencer chaque requête par | + | Pour **afficher** les plans proposés par le SGBD et leur coût, se placer dans une requête et exécuter la macro p4 (touche F2) |
+ | |||
+ | /* | ||
<code sql> | <code sql> | ||
explain plan for SELECT ... | explain plan for SELECT ... | ||
Ligne 51: | Ligne 70: | ||
puis terminer chaque requête par | puis terminer chaque requête par | ||
@p4 | @p4 | ||
+ | */ | ||
Ligne 65: | Ligne 84: | ||
Quel est le coût d'accès à chaque table ? Rappel : le coût d'un plan se lit dans la colonne Cost de l'opérateur racine (Id=0) | Quel est le coût d'accès à chaque table ? Rappel : le coût d'un plan se lit dans la colonne Cost de l'opérateur racine (Id=0) | ||
<code sql> | <code sql> | ||
- | explain plan for | + | --explain plan for |
select * from J; | select * from J; | ||
- | @p4 | + | --@p4 |
</code> | </code> | ||
Ligne 139: | Ligne 158: | ||
<showif isloggedin> | <showif isloggedin> | ||
- | <fc #008000>le prédicat sur le salaire est maintenant assez sélectif pour que le nombre de Joueurs soit inférieur au nombre de Club (ça change l'ordre par rapport à la 1ere requête), mais pas assez sélcetif pour utiliser l'index</fc> | + | <fc #008000>le prédicat sur le salaire est maintenant assez sélectif pour que le nombre de Joueurs soit inférieur au nombre de Clubs (ça change l'ordre par rapport à la 1ère requête), mais pas assez sélectif pour utiliser l'index</fc> |
</showif> | </showif> | ||