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

Langage SQL Discussion :

Jointure ou Vue


Sujet :

Langage SQL

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 87
    Par défaut Jointure ou Vue
    Bonjour,

    La question peut sembler simple, mais je n'ai pas trouvé de réponse à proprement parler.

    Dans le cadre d'un accès en production, est-il préférable de requêter sur des vues, ou utiliser des jointures (en l'espèce Postgresql avec requete web php).
    Sachant que ma base est comme sqlpro les aime, avec beaucoup de tables et peu de colonnes, si je souhaite faire une requête complexe, je vais avoir pas mal de jointures.
    Mais je préfère m'amuser avec des jointures que de perdre en performance...

    Y'a-t-il un article qui aborde le sujet ?

    Merci beaucoup

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Votre vue aura probablement des jointures donc ça ne changera pas grand chose au niveau performances, si ce n'est que, peut-être, le plan d'exécution de la vue sera stocké en mémoire et ce sera ça de gagné dans l'exécution des requêtes.

    Les vues permettent de faire abstraction du schéma de la BDD. À la limite, l'application n'a pas à connaître ce schéma. Elle a un objet métier qui a besoin de données situées dans plusieurs tables alors elle interroge une vue qui représente son objet métier.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par remy67 Voir le message
    Mais je préfère m'amuser avec des jointures que de perdre en performance...
    Vous ne perdrez pas de performance si vous utilisez un bon SGBDR comme Oracle ou SQL Server en utilisant exclusivement des vues pour toutes vos requêtes...

    En effet ces SGBDR disposent d'un optimiseur à la fois sémantique et statistique. L'optimiseur sémantique permet de simplifier des requêtes lorsque certaines opérations sont inutiles. Par exemple si vous avez fait une vue avec 5 jointures et que la requête finale n'en à besoin que de 4 parce que vous ne ramenez aucune information de la 6e table, alors cette branche de jointure sera ignorée et la plan de requête simplifié....

    Évidemment, si vous êtes sur MySQmerde, il en va tout autrement !

    Mieux : ne pas utiliser des vues risque de vous poser à des problématiques insolubles... Un seul exemple. Pour calculer le CA TTC d'une entreprise de vente, on peut au choix :
    • faire le TOTAL HT par ligne, puis faire la somme par TVA et enfin appliquer les différents taux de TVA et sommer la résultat
    • faire le total TTC par ligne, puis faire la somme

    Ces deux requêtes sont valables et il y a de fortes chances qu'elle ne donne pas le même résultat; En effet les règles de calculs étant différentes, les arrondis ne se feront pas dans le même sens !
    En fixant la règle par une vue et en obligeant à passer systématiquement par la vue on a l'assurance d’obtenir toujours le même résultat !
    Si on laisse faire chaque développeur avec les tables, on aura autant de résultats et les comptables vont s'arracher les cheveux !

    A +



    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/ * * * * *

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 87
    Par défaut
    Merci pour vos réponses,
    Je vais donc forcer l'utilisation des vues dans mon projet.

    Y a-t-il des règles spécifiques concernant la création des vues ? Dans mes recherches, je n'ai pas vu de tuto ou remarques particulières concernant ce thème, à croire que cela est accessoire.


    Pour ma défense concernant Postgresql, sans rentrer dans un débat technique, mon expérience étant de toute façon totalement insuffisante pour argumenter, quand je constate l'utilisation croissante des ORM, un concept auquel je n'adhère pas du tout, le tout associé à Mysql qui pour le coup est effectivement une blague. Sans être dans la vérité, j'essaie de m'en rapprocher le plus possible avec le peu de moyens que j'ai .

    (J'ai également posé deux questions je ne sais pas si vous avez une alerte dans ces cas,
    http://blog.developpez.com/exercices...n_de_personnes
    http://blog.developpez.com/exercices..._d_une_adresse )

  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
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    PostGreSQL est bien plus costaud que MySQL au niveau des vues. Néanmoins, il ne dispose pas de l'optimisation sémantique indispensable pour utiliser les vues de manière performante. Ce n'est pas très grave tant que vous n'avez pas de grandes antiquités de données et que vous faites attention à créer des vues pas trop génériques !

    J'ai répondu a vos demandes sur le bogue des exos de modélisation.

    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/ * * * * *

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 87
    Par défaut
    Merci beaucoup !!!
    Votre réponse appelle une nouvelle question.

    On parle souvent de la quantité de données, mais au final je n'ai jamais vu pour le moment une échelle de taille.

    Une petite base 1 million de lignes ?
    Une grosse base 10 millions ?

    Question subsidiaire, comment compter ce nombre de lignes

    - Somme total de l'ensemble des lignes des tables.

    - Nombre de lignes de la table la plus grosse.

    - Ou nombre de lignes via les jointures justement en lien avec ma question initiale.

    Bonne journée

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Le nombre de lignes d'une table est beaucoup moins important que le volumétrie d'une table ou d'une base.

    100 millions de lignes d'une table d'une seule colonne de type INT représente à peu près 100 Mo... c'est à dire un petit volume par rapport à la RAM du serveur (quelques Go !)

    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/ * * * * *

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 87
    Par défaut
    Très bien merci

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

Discussions similaires

  1. Problème jointure sur vue
    Par Slayes dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/07/2013, 15h36
  2. [MySQL-5.5] boucle et jointure et vue
    Par healou dans le forum Requêtes
    Réponses: 2
    Dernier message: 04/07/2013, 15h59
  3. Jointures ou vue
    Par dorian53 dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/01/2010, 15h39
  4. [SQL Server2000] Jointure et vue
    Par Chtulus dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/05/2008, 10h44
  5. [FB1.5]Vue avec jointure sur tables ?
    Par Sitting Bull dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2004, 17h07

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