Exercice

Soit la table suivante contenant des listes de références produits :

CTRL+C pour copier, CTRL+V pour coller
1
CREATE TABLE Tref (
2
 ref1 char(100) Primary Key,
3
 ref2 char(100) Unique Not Null, 
4
 ref3 char(100) Unique Not Null,
5
 ref4 char(100) Unique Not Null,
6
 ref5 char(100) Unique Not Null,
7
 ref6 char(100) Unique Not Null,
8
 ref7 char(100) Unique Not Null);
CREATE TABLE Tref (
 ref1 char(100) Primary Key,
 ref2 char(100) Unique Not Null, 
 ref3 char(100) Unique Not Null,
 ref4 char(100) Unique Not Null,
 ref5 char(100) Unique Not Null,
 ref6 char(100) Unique Not Null,
 ref7 char(100) Unique Not Null);

On cherche à optimiser la requête suivante ("_" et "%" sont des jokers qui signifient respectivement "1 caractère quelconque" et "0 à N caractères quelconques") :

CTRL+C pour copier, CTRL+V pour coller
1
SELECT ref1 
2
FROM Tref 
3
WHERE (ref2 like 'REF42%' or ref2 like 'REF__7%' or ref2 like 'REF_78%');
SELECT ref1 
FROM Tref 
WHERE (ref2 like 'REF42%' or ref2 like 'REF__7%' or ref2 like 'REF_78%');

Quelles sont les opérations de partitionnement qui permettront d'optimiser cette requête de façon maximale (indépendamment des conséquences pour d'éventuelles autres requêtes) ?

  • Un partitionnement horizontal

  • Un partitionnement vertical

CorrectionRecommencer