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

Administration SQL Server Discussion :

Jointure sur des Vues


Sujet :

Administration SQL Server

  1. #1
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut Jointure sur des Vues
    Hello a Tous

    Débat chez nous sur les jointures sur les vues, car beaucoup de developpeurs aiment le faire pour la simplicité des requetes SQL

    Moi Personnellement je trouve pas ca terrible au niveau Syntaxe SQL, et de plus cela pourrit mon Plan d'execution...

    Quelle est votre avis sur la question ?

    merci a vous et bonne journée

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par olivtone Voir le message
    Moi Personnellement je trouve pas ca terrible au niveau Syntaxe SQL
    Quel est le problème au niveau de la syntaxe ? Une vue, une table, c'est transparent au niveau de l'écriture d'une requête !

    Citation Envoyé par olivtone Voir le message
    cela pourrit mon Plan d'execution
    Ce n'est pas censé le faire. Quel SGBD utilises-tu ?
    Il y a même mieux, avec les vues matérialisées ou indexées (la terminologie diffère selon le SGBD), l'optimiseur peut se servir de vues pour optimiser des requêtes qui ne les utilisent pas initialement !

    Donc mon avis perso :
    1) cela facilite la lecture et l'écriture des requêtes
    2) cela peut optimiser les requêtes.
    3) Une table peut être remplacée par une vue (et vice-versa). Du coup, en cas d'évolution du schéma de la BD, s'il faut garder une compatibilité, c'est tout gagant.

    Donc, pour moi, vue = oui
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par dorinf Voir le message
    1) cela facilite la lecture et l'écriture des requêtes
    2) cela peut optimiser les requêtes.
    3) Une table peut être remplacée par une vue (et vice-versa). Du coup, en cas d'évolution du schéma de la BD, s'il faut garder une compatibilité, c'est tout gagant.

    Donc, pour moi, vue = oui
    +1
    et
    4) permet de masquer certaines colonnes sensibles par exemple dans le cas d'un service publié accessible par d'autres briques que celle propriétaire de la table (rarement utilisé)
    5) permet de simplifier l'application en livrant des colonnes calculées ou recombinées
    etc...

  4. #4
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut
    Oui mais si on appelle juste dans la jointure une colonne de la vue, et que en regardant de plus pres le code la vue

    et on s’aperçoit que celle ci fait 47 jointures et met 3 minutes a s’exécuter, dans ce cas n'est ce pas plus simple de passer par les tables ?

    Dans le plan d’exécution, si la vue fait appel a 7 tables différents, je vois les 7 tables appelés dans mon plan d’exécution, alors que si ma requête tapait sur la table et non sur la vue, mon plan d’exécution serait beaucoup

    plus simplifié...

  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 763
    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 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par olivtone Voir le message
    Oui mais si on appelle juste dans la jointure une colonne de la vue, et que en regardant de plus pres le code la vue

    et on s’aperçoit que celle ci fait 47 jointures et met 3 minutes a s’exécuter, dans ce cas n'est ce pas plus simple de passer par les tables ?

    Dans le plan d’exécution, si la vue fait appel a 7 tables différents, je vois les 7 tables appelés dans mon plan d’exécution, alors que si ma requête tapait sur la table et non sur la vue, mon plan d’exécution serait beaucoup

    plus simplifié...
    Si votre modèle est parfaitement normalisé (respects des formes normales, au minimum 3e) vos données atomique et :
    • aucun null
    • aucune redondance
    • la modif d'une information n'impacte pas plus d'une ligne

    et que vous avez mis des contraintes, notamment d'IR, l'optimiseur de SQL Server est capable de supprimer certaines jointures inutiles....

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

Discussions similaires

  1. [AC-2013] Jointure sur des vues générées dans PostgresSQL
    Par fafa63 dans le forum Access
    Réponses: 1
    Dernier message: 24/03/2015, 14h23
  2. faire une jointure sur des clés différentes
    Par phpaide dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/09/2006, 10h16
  3. [DB2] Problèmes avec une Jointure externe sur des vues
    Par treivse dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/07/2006, 11h42
  4. Réponses: 16
    Dernier message: 14/04/2006, 18h38
  5. [Forms 6i] Ecrans basés sur des vues
    Par macben dans le forum Oracle
    Réponses: 3
    Dernier message: 11/01/2006, 16h53

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