IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Requête sur les vues et performances


Sujet :

Requêtes MySQL

  1. #1
    Membre actif
    Avatar de Fildz
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 161
    Points : 272
    Points
    272
    Par défaut Requête sur les vues et performances
    Bonjour,

    j'ai lu dans ce post http://www.developpez.net/forums/d61...-interet-vues/ et celui ci http://www.developpez.net/forums/d61...es/#post412320
    que les vues n'améliorait pas les performances.


    A priori je pensais que les SGBD mettaient en cache le résultat du SELECT générant la vue, et regénérait le cache lorsqu'un INSERT, ou un UPDATE ou un DELETE était effectué sur l'une des tables sur laquelle portait la requête.

    Ma question est simple, pourquoi les vues n'améliorent-elles pas les performances ?

    Autre question, serait-il possible de trouver un SGBD ou d'activer un paramètre dans MySQL pour que le comportement que je viens de décrire soit opérationnel ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 133
    Points : 117
    Points
    117
    Par défaut
    Une vue est représentée par une requête. MySQL stocke cette requête, et la réexécute à chaque fois que tu veux consulter la vue. Donc deux requêtes seront exécutées, celle qui va renvoyer les lignes concernées par la vue, puis la requête qui va piocher dans ce résultat.

    Le comportement que tu décris corresponds aux vues MATERIALISEES, ce que MySQL ne gère pas.

    Cependant tu peux implémenter toi même ce que tu cherches. En faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE ma_vue_materialisee AS SELECT ........
    Et tu rafraichis ma_vue_materialisee comme bon te semble ( toutes les X secondes, via un trigger .....)

  3. #3
    Membre actif
    Avatar de Fildz
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 161
    Points : 272
    Points
    272
    Par défaut auto réponse
    Suite a une petite investigation il apparait que le comportement que j'ai décrit est implémenté (de manière plus exhaustive) par les "tables snapshot" aussi appelé "materialized view". Mysql ne permet pas cette fonctionnalité (http://dev.mysql.com/doc/refman/5.1/en/faqs-views.html), alors qu'oracle si (http://www.labunix.uqam.ca/~lalonde/...es_oracle.html).

    Reste la possibilité d'implémenter soit même ce principe (notamment avec les triggers) ont parlerait alors de "Vues concrêtes".

    EDIT: Grilled : Merci beaucoup pour les précisions ionesco

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 133
    Points : 117
    Points
    117
    Par défaut
    FILDZ il fallait faire BDIA lol .....

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 782
    Points : 52 783
    Points
    52 783
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Fildz Voir le message
    Reste la possibilité d'implémenter soit même ce principe (notamment avec les triggers) ont parlerait alors de "Vues concrêtes".
    Sauf que heureusement ce n'est pas l'implémentation généralement choisit par les éditeurs car cela s'avérerait horriblement couteux. Imaginez ce qu'une vue matérialisée demanderait en recalcul si à chaque INSERT, UPDATE ou DELETE il fallait tout refaire et que les tables sous-jacentes aient un million de ligne (cas courant en ce genre de circonstances ?

    En fait les SGBDR travaillent à ce niveau par différence (en particulier SQL Server) sans devoir tout recalculer, mais juste la ou les lignes impactée par l'ordre de mise à jour.
    Par exemple si INSERT ou DELETE alors un update des lignes de la vue est effectué. Si UPDATE, alors deux UPDATE (valeurs avant et valeurs après) sont effectués pour les lignes impactées de la vue....

    Bref, il y a encore quelques années/hommes de R&D pour MySQL pour développer ce genre de choses... Et quand on sait que cela appartient désormais à Oracle, je doute que cela voit le jour à l'avenir !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. question sur les vues et l'optimisation de requêtes
    Par zaboug dans le forum Requêtes
    Réponses: 8
    Dernier message: 25/03/2009, 16h28
  2. Réponses: 4
    Dernier message: 05/09/2006, 07h58
  3. conseil sur les vue systeme db2
    Par donny dans le forum DB2
    Réponses: 9
    Dernier message: 25/08/2006, 21h16
  4. Réponses: 10
    Dernier message: 27/07/2006, 14h04
  5. question (peut-être idiote) sur les vues
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/03/2003, 10h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo