You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
2.4 KiB
23 lines
2.4 KiB
\section{Exemple complet}\label{exemple-complet}
|
|
|
|
\inputminted[bgcolor=darkBackground]
|
|
{sql}
|
|
{query_14.sql}
|
|
|
|
\inputminted[bgcolor=darkBackground]
|
|
{xml}
|
|
{query_14.xml}
|
|
|
|
{\setmonofont{Everson Mono}
|
|
\inputminted[bgcolor=darkBackground]
|
|
{ocaml}
|
|
{query_14.extalg}
|
|
}
|
|
|
|
La ligne $27$ indique un \emph{Seq Scan} sur la relation \emph{reserves}, si l'on enlève l'indication de l'algorithme utilisé, cela revient à simplement parler de la relation \emph{reserves}. Sur les lignes $22$ à $29$, on utilise $\omega$ sur cette relation avec des paramètres particuliers. La ligne $23$ nous indique qu'il n'y a aucune partition, ce qui se note \emph{Fine}. La ligne $24$ nous indique qu'on va sélectionner les attributs \emph{sid}, \emph{bid} et \emph{dday} de la relation, et qu'on les renomme respectivement en \emph{r.sid}, \emph{r.bid} et \emph{r.dday}. La ligne $25$ indique quant à elle que l'on va filtrer le résultat en ne gardant que les lignes respectant la condition $bid = 103$. L'écriture mathématique de cette expression, en faisant abstraction des variables notées $x_i$, serait la suivante:
|
|
|
|
\[ \omega_{\text{Fine},\text{r.sid → r.sid, r.bid → r.bid, r.dday → r.dday},\text{bid} = 103}(\text{reserves}) \]
|
|
|
|
Les variables notées $x_i$ servent à conserver des informations parfois nécessaires ailleurs alors qu'elles ne sont pas disponible. En effet, le \bsc{sgbd}, afin d'optimiser l'exécution des requêtes, va parfois appliquer un filtre en fonction de la valeur d'un attribut qui n'est pas disponible sur les relations qu'il est en train de traiter, il faut donc enregistrer certaines informations pour pouvoir retrouver ces valeurs.
|
|
|
|
On peut aussi noter qu'à la ligne $14$, il y a: \emph{× (DependentJoin) (Hash Join)}, \emph{Hash Join} est simplement l'algorithme qui va être utilisé, il ne fait pas partie de l'algèbre étendue. Cependant, il est intéressant de noter que le \emph{Join} est dit \emph{Dependent}, en effet, là aussi, le \bsc{sgbd} va souvent avoir besoin du résultat d'une des deux relations composant la jointure pour pouvoir calculer l'autre. Ainsi, on note par défaut toutes les jointures comme étant des \emph{DependentJoin} et ce n'est que lors de la phase de normalisation que l'on détectera si le \emph{Dependent} est vraiment nécessaire ou non — ici, ça n'est par exemple pas le cas.
|
|
|