100% ont trouvé ce document utile (1 vote)
135 vues3 pages

Optimisation de requêtes SQL en BDA

Transféré par

zarokuiop
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
135 vues3 pages

Optimisation de requêtes SQL en BDA

Transféré par

zarokuiop
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Paris Nanterre

Master 1 Miage - BDA


TD Optimisation de requêtes

Exercice 1 :
Soit la base de données suivante :
Client(idClient, nom, prénom, adresse, tél)
Produit(idProduit, libelle, prix)
Commande(idCommande, idClient, idProduit, date, quantité)

Pour les requêtes ci-dessous, construisez l’arbre algébrique optimal :


a)
SELECT c.idClient, p.libelle
FROM Client c, Produit p, Commande co
WHERE c.idClient=co.idClient and p.idProduit= co.idProduit and co.date= ‘15/02/2017’

b)
SELECTp.libelle, co.quantité
FROM Produit p, Commande co
WHERE p.idProduit= co.idProduit and prix > 300

c)
SELECT c.nom, co.date, p.libelle
FROM Client c, Produit p, Commande co
WHERE c.idClient=co.idClient and p.idProduit= co.idProduit and co.quantité>40

Exercice 2 :

Soit la base STATION DE SKI de schéma :


• station (noms, gare, type, telephone,..)
• activité (type_activité, noms_a, contraintes,..)

Pour la requête suivante, indiquez :


✓ l’arbre algébrique de la requête
✓ l’arbre algébrique optimal
Requête : Quels sont les noms des stations proposant une activité ‘tennis’ et quelles sont les
gares où elles se situent ?
SELECT noms, gare
FROM station, activité
WHERE type_activité = ‘tennis’
AND station.noms=activité.noms_a

1
Exercice3 :

Soit la base de données suivante :


• Editeur (Id-editeur, nom, rue, ville, pays)
• Livre (Id-livre, titre, Id-editeur)

L’attribut Id-editeur est codé sur 10 octets et titre sur 100 octets.
Les pages de la base occupent 4000 octets. La mémoire peut contenir 101 pages. Chaque
relation (Editeur et Livre) a un index arbre B+ sur les attributs clés (Id_editeur et Id_livre
respectivement).

Les statistiques contenues dans le catalogue sont :


· NTuples(Editeur) = 15000
· BFactor(Editeur) = 20 => NBlocks (Editeur) = 15000/20 = 750
· NLevelId-editeur(I) = 3
· NTuples(Livre) = 400000
· BFactor(Livre) = 10 => NBlocks(Livre) = 400000/10 = 40000
· NDistincPays(Editeur) = 4 => SCPays(Editeur) = 15000/4 = 3750
· NLevelId-livre(I) = 4

Pour la requête « quels sont les titres des livres édités par les éditeurs du pays ‘P’ »
SELECT Titre
FROM Editeur e, Livre l
WHERE e.Id.editeur = l.Id-editeur
AND e.Pays = ‘P’

On suppose que le résultat donne ¼ des livres.


Supposons qu’on exécute la requête en utilisant le plan d’exécution représenté par l’arbre
algébrique ci-dessous et l’algorithme des boucles imbriquées en utilisant au maximum
l’espace du buffer de mémoire. Evaluez le coût de la requête.

Exercice4:
Soit la base de données suivante :
Client(idClient, nom, prénom, adresse, tél)
Produit(idProduit, libelle, prix)
Commande(idCommande, idClient, idProduit, date, quantité)

L’attribut IdClient est codé sur 10 octets et nom sur 100 octets.
2
L’attribut idProduit est codé sur 20 octets.
Les pages de la base occupent 5000 octets. Chaque relation a un index arbre B+ sur les
attributs clés (idClient, idProduit et idCommande).

Les statistiques contenues dans le catalogue sont :


· NTuples(Client) = 10.000
· BFactor(Client) = 20 => NBlocks (Client) = 10000/20 = 500
· NLevelIdClient(I) = 3
· NTuples(Produit) = 50.000
· BFactor(Produit) = 50 => NBlocks(Produit) = 50000/50 = 1000
· NLevelIdProduit(I) = 4
· NTuples (Commande) = 200.000
· BFactor(Commande) = 40 => NBlocks (Commande) = 200.000/40 = 5000
· NLevelIdCommande(I) = 5

On suppose que 20% des produits uniquement ont un prix supérieur à 1000 euros.

Soit la requête « Donner le nom des clients ayant commandé au moins une fois un produit
dont le prix est supérieur à 1000 euros »

L’algorithme de jointure utilisé est celui des boucles imbriquées indexées.

Questions :
1- Ecrivez la requête en SQL
2- Dessinez l’arbre algébrique optimal
3- Evaluez le coût d’exécution de la requête

Vous aimerez peut-être aussi