MySQL 5 : Les vues — (part 5/7)
Masquer la complexité du schéma
L’équipe de développement doit écrire un moteur de recherche pour une application de commerce électronique. Voici un extrait des tables de la base de données impliquées dans la recherche des produits du site.
La difficulté est de générer la bonne requête avec les bonnes jointures (plus d’une dizaine), à chaque recherche. Une solution pour faciliter le travail des développeurs est de créer une vue qui fait référence à toutes les tables impliquées dans la recherche des produits. Les recherches se feront donc sur cette vue, avec des requêtes plus simples à écrire.
La vue est créée avec l’algorithme TEMPTABLE, les verrous sur les tables sous-jacentes seront libérés plus rapidement ce qui permettra de moins pénaliser les autres requêtes. TEMPTABLE a la particularité de rendre la vue non modifiable, mais cela ne gêne pas du tout, car la vue n’est accédée qu’en lecture.
Extrait de la vue « moteur de recherche »:
CREATE ALGORITHM = TEMPTABLE VIEW moteur_de_recherche AS SELECT s.product_name as nom_produit, ... (les champs nécessaires) FROM product s LEFT JOIN product_files sf ON s.product_id=sf.file_product_id LEFT JOIN ..... (toutes les tables impliquées) WHERE ... ;
Cette astuce permet de « simplifier » de façon assez significative le schéma.
Un dernier mot pour noter que cette solution ne permet pas d’améliorer les performances de la recherche, dans le sens où la requête qui génère la vue est lancée à chaque appel de cette dernière.
(à suivre… Modifier automatiquement des données sélectionnées)
Architecte Solution Cloud chez Oracle
MySQL Geek, Architecte, DBA, Consultant, Formateur, Auteur, Blogueur et Conférencier.
—–
Blog: www.dasini.net/blog/en/
Twitter: https://twitter.com/freshdaz
SlideShare: www.slideshare.net/freshdaz
Youtube: https://www.youtube.com/channel/UC12TulyJsJZHoCmby3Nm3WQ
—–
[…] CREATE ALGORITHM= MERGE SQL SECURITY DEFINER VIEW `v_secretaire_autre` AS SELECT nom, prenom, tel_perso, tel_bureau, statut FROM employe WHERE ville <> ‘Paris’; (à suivre… Masquer la complexité du schéma) […]