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 :

Index sur les vues


Sujet :

Administration SQL Server

  1. #1
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut Index sur les vues
    Bonjour à toutes et à tous,

    Voilà, dans le cadre d'un audit de performances, j'aurai besoin de quelques éléments de réponses.

    Est-ce que placer des index sur des vues (qui sont très utilisées) améliore de façon notable les performances ?

    J'aimerai essayer d'en placer mais il y a des agrégats de type MAX dans la sélection de la vue, ce qui visiblement empêche la possibilité de créer des index ; j'ai essayé de passer par une table dérivée (SELECT * FROM (SELECT MAX(...) FROM ...) t) mais le problème persiste. Y a-t-il une solution ?

    Merci d'avance de vos réponses.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Préciser la version utilisée serait un minimum.

  3. #3
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Est-ce que placer des index sur des vues (qui sont très utilisées) améliore de façon notable les performances ?
    Tout dépend de la requête contenue dans la vue.
    Pour les vues avec aggrégation de données cela peut être utile par exemple.

    J'aimerai essayer d'en placer mais il y a des agrégats de type MAX dans la sélection de la vue, ce qui visiblement empêche la possibilité de créer des index
    La fonction MAX ne peut pas être utilisée dans une vue indexable.

    Pour savoir si votre vue peut être indexable vous pouvez utiliser la fonction OBJECTPROPERTY de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT OBJECTPROPERTY(OBJECT_ID('<votre vue>'), 'IsIndexable');
    Comme le précise Waldar, vous devez faire attention à la version utilisée pour cela. Seule version Entreprise de SQL Server permet de créer des vues indexées.

    ++

  4. #4
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut
    Bonsoir, merci beaucoup pour ces éléments de réponse.

    La version de SQL Server peut varier (globalement c'est du 2005, après il ya des version enterprise comme express) car c'est un progiciel vendu.

    Il n'y a pas moyen de contourner cette impossibilité d'indexation pour les agrégats ?

  5. #5
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Si, en passant par les triggers qui calculeraient à chaque fois un éventuel maximum et qui alimenteraient une table que vous aurez créé.

    Cependant attention aux performances !!

    ++

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Seul le SUM et le COUNT_BIG sont supportés. Avec ces deux éléments vous pouvez d'ailleurs faire un AVERAGE... Mais ni MAX ni MIN, même en essayant de le truander en lui faisant croire autre chose !

    Il ne faut pas chercher à faire des vues indexées qui représentent exactement ce que vous voulez obtenir au final, mais des vues d'agrégation intermédiaires.

    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. conseil sur les vue systeme db2
    Par donny dans le forum DB2
    Réponses: 9
    Dernier message: 25/08/2006, 21h16
  2. Les index et les vues oracle
    Par kariba dans le forum Oracle
    Réponses: 13
    Dernier message: 18/07/2006, 09h42
  3. Indexe sur les champs de type DATETIME
    Par Thierry8 dans le forum Requêtes
    Réponses: 9
    Dernier message: 25/06/2006, 19h45
  4. [DB2] Question sur les index et les vues
    Par ahoyeau dans le forum DB2
    Réponses: 1
    Dernier message: 14/03/2005, 08h30
  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