Les vues myql, quelques précisions ...

Eléphant du PHP | 100 Messages

29 nov. 2006, 18:49

Bonjour à tous,

Je m'interroge sur le fonctionnement des vues, et notamment sur leurs performance...

Si quelqu'un possède des éléments de réponse ou de la documentation à ce sujet ... merci d'avance !

Maintenant un cas préci m'interesse:

Supposons que j'ai deux tables, utilisateur et groupe comme ceci:

utilisateur
-----------
id
nom
prenom
adresse
signature
id_groupe

groupe
-----------
id
intitule

Si je cré une vue detail_utilisateur tel que:

detail_utilisateur
------------------
nom
prenom
adresse
signature
libelle_groupe

Une requete sur la table detail_utilisateur sera-t-elle plus rapide qu'un requete utilisant une jointure entre la table utilisateur et la table groupe ?
(tel que: SELECT nom, prenom, adresse, signature, libelle as libelle_groupe FROM utilisateur, groupe WHERE utilisateur.id_groupe = groupe.id)

Merci !
Script gratuit de videothèque: PhpMesFilms
sur http://phpmesfilms.dyndns.org/

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

29 nov. 2006, 20:06

Pour l'implémentation des vues, ça dépend étroitement du logiciel de gestion de base de données utilisé. Si mes souvenirs sont bons, les vues sous MySQL 5.0 sont implémentées sous la forme d'une réécriture de la requête originale, donc les performances sont très similaires à ce que l'on obtiendrait en écrivant la requête sans utiliser de vue. Tout ceci est à prendre au conditionnel, mais si je tombe sur de la doc je la posterai ici.

De ton côté, je te conseille d'essayer une vue simple et étudier tes requêtes SELECT grâce à EXPLAIN EXTENDED pour vérifier si ce que je dis est correct.

Eléphant du PHP | 100 Messages

30 nov. 2006, 10:54

Bon apparemment sous mysql 5 les vues n'ont pas d'existance propre, c'est à dire que la requête correspondant à une vue est executée à chaque appel sur cette vue.

Effectivement Hubert, d'un point de vue performance une vue n'est donc d'aucune utilité.
Script gratuit de videothèque: PhpMesFilms
sur http://phpmesfilms.dyndns.org/