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

PostgreSQL Discussion :

performances : select, procédure stockée ou vue ?


Sujet :

PostgreSQL

  1. #1
    Membre expérimenté Avatar de Benoit_Durand
    Profil pro
    Consultant en Business Intelligence Freelance
    Inscrit en
    Mars 2005
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence Freelance

    Informations forums :
    Inscription : Mars 2005
    Messages : 861
    Points : 1 308
    Points
    1 308
    Par défaut performances : select, procédure stockée ou vue ?
    Bonjour,
    Je suis actuellement en phase de dev sur un projet utilisant postgresql et je n'ai pas beaucoup d'expérience sur ce sgbd.

    Pour un requête toute simple genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select m.champ1,m.champ1,m.champ1,rg.champ1,rg.champ1,	py.champ1 	from atf.table1 m
    	inner join atf.tabledim2 py on m.SKtable1=py.SKtable2
    	inner join atf.tabledim3 rg on m.SKtable1=rg.SKtable3
    	where m.SKtable1=maValeur;
    Vous l'aurez compris maValeur est le paramètre de la requête. La requête ne retourne qu'une seule ligne (tabledim2 0,1-1,n table1 1,n - 0,1 tabledim3)

    Pour une requête aussi simple, vaut-il mieux la faire dans l'application(php), la mettre dans une procédure stockée, ou faire une vue ? Ou est-ce qu'il n'y a pas de différence ?

    Est-ce que ce sera la même réponse pour cette requête qui peut retourner plusieurs enregistrements ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select m.champ1,m.champ1,m.champ1,rg.champ1,rg.champ1,	py.champ1 	from atf.table1 m
    	inner join atf.tabledim2 py on m.SKtable1=py.SKtable2
    	inner join atf.tabledim3 rg on m.SKtable1=rg.SKtable3
    	where py.champ1='maValeur';
    Merci par avance.
    Pensez à la fonction Recherche

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Combien de dizaines de millions de lignes ont tes tables pour que tu t'inquiètes à ce point des performances ?

    Plus généralement, ce n'est pas en ces termes qu'il faut réfléchir. Une vue est une requête enregistrée alors le temps d'exécution entre une vue et sa requête directement lancée sera quasi identique. Les vues servent à mieux gérer l'accès aux données et à simplifier l'écriture du code SQL dans les applications clientes en éliminant un paquet de jointures et de requêtes complexes que ne saurait pas forcément faire un développeur de la meilleure façon qui soit.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Quant aux procédures stockées, je dirais qu'elles ne présentent aucun intérêt puisque tu as une seule requête. Elles pourront être envisagées à partir d'au moins 2 requêtes pour réduire les allers-retours client/serveur

  4. #4
    Membre expérimenté Avatar de Benoit_Durand
    Profil pro
    Consultant en Business Intelligence Freelance
    Inscrit en
    Mars 2005
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence Freelance

    Informations forums :
    Inscription : Mars 2005
    Messages : 861
    Points : 1 308
    Points
    1 308
    Par défaut
    OK merci.
    La volumétrie n'est pas énorme : 500k lignes pour atf.table1.
    C'est plutôt la fréquence des requêtes sur la table qui m'inquiète.
    J'arrive du décisionnel et là je dois faire du e-commerce, le truc qui n'a rien à voir.
    Pensez à la fonction Recherche

Discussions similaires

  1. Réponses: 11
    Dernier message: 15/02/2011, 00h10
  2. simple select plus performant que procédure stockée
    Par dens19 dans le forum Développement
    Réponses: 5
    Dernier message: 01/09/2010, 10h36
  3. besoin de conseil sur les procédures stockées et vues.
    Par zenfantasy dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/11/2007, 21h41
  4. Procédure stockée et vues
    Par freegreg dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/03/2007, 10h05
  5. [VB.NET]Performance exécution procédure stockée
    Par Franck2mars dans le forum Windows Forms
    Réponses: 3
    Dernier message: 29/05/2006, 16h11

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