Exercice
Soit les deux tables créées par les instructions suivantes :
CREATE TABLE T2 (
E char(10) Primary Key);
CREATE TABLE T1 (
A number(5) Primary Key,
B number(2) Not Null,
C char(10) References T2(E),
D char(5));
CREATE TABLE T2 ( E char(10) Primary Key); CREATE TABLE T1 ( A number(5) Primary Key, B number(2) Not Null, C char(10) References T2(E), D char(5));
Soit une requête dont on cherche à optimiser les performances :
SELECT A
FROM T1, T2
WHERE C=E AND Abs(B)>50
ORDER BY D;
SELECT A FROM T1, T2 WHERE C=E AND Abs(B)>50 ORDER BY D;
Sachant que tous les attributs sont très discriminés (c'est à dire que les enregistrements contiennent souvent des valeurs différentes les uns par rapport aux autres) et que les deux tables contiennent un grand nombre d'enregistrements, quelles sont les instructions de création d'index qui vont permettre d'optimiser l'exécution de cette requête ?
Votre choixChoix attenduRéponse
Il est intéressant d'indexer C car c'est une clé étrangère et D car il est mobilisé dans un tri.
Indexer B est inutile (donc néfaste) car B est utilisé à travers une fonction (valeur absolue ici).
A et E sont déjà indexés automatiquement lors de la création des tables, car ce sont les clés primaires.