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

Développement SQL Server Discussion :

Index Manquant, mais déjà présent [2008R2]


Sujet :

Développement SQL Server

  1. #1
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut Index Manquant, mais déjà présent
    Bonjour,

    Voilà je suis assez novice dans l'utilisation de SQL server.
    Je travaille sur une base lié à notre logiciel de production, donc je n'ai pas la main sur tout.
    Afin d'améliorer les performances de nos requêtes, j’exécute régulièrement cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT 'CREATE INDEX [missing_index] ON ' + mid.statement + '(' + ISNULL(mid.equality_columns, '') + CASE         WHEN mid.equality_columns IS NOT NULL
                AND mid.inequality_columns IS NOT NULL
                THEN ', '
            ELSE ''
            END + ISNULL(mid.inequality_columns, '') + ')' + ISNULL(' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement
         ,mid.statement
        , migs.*
        , mid.database_id
        , mid.[object_id]
    FROM sys.dm_db_missing_index_groups mig
    INNER JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handle
    INNER JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle
    INNER JOIN sys.objects sysobj ON sysobj.object_id = mid.[object_id]
    ce qui me permet de rechercher la liste des index manquant.
    Je les analyse un peut puis je met en place les index maquant.
    Mais très régulièrement j'ai des index indiqués comme manquant hors ceci sont bien présent.
    Est-ce que quelqu'un à déjà rencontré ce genre de problèmes?
    Est-ce que j'oublie de faire quelque chose?
    merci d'avance pour vos suggestions.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    est-ce que ces indexes sont actifs ?

  3. #3
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    Oui ils le sont.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    La fonctionnalité d'index manquant est très intéressante, mais il faut la voir comme un indicateur d'une possibilité de contre-performance dans un plan de requête.
    Il faut donc rechercher le plan de requête qui a généré la recommandation d'index pour comprendre pourquoi; souvent, une simple réécriture de la requête suffit.

    Comment avez-vous détecté que l'index était déjà présent, et qu'il est bien utilisé par le plan de requête qui génère la notification de suggestion ?

    @++

  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 772
    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 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    En appliquant bêtement toutes les demandes d'index vous aller :
    1) en créer trop
    2) en créer de redondants
    3) en créer des inclus
    Il est nécessaire de :
    • avoir suffisamment de recul pour que le serveur ait accumulé suffisamment de stats sur ce sujet (au minimum 1 mois de marche sans interruption - voir SELECT sqlserver_start_time FROM sys.dm_os_sys_info)
    • mutualiser les demandes en vertu du fait que l'ordre des colonnes dans la partie "equality columns" peut être changé du fait du principe de commutativité de l'opérateur d'égalité, mais pas dans la colonne "equality columns", les opérateurs logiques d'inégalité n'étant pas commutatifs
    • abandonner la clause INCLUDE si trop de colonnes y figurent et en particulier si elle reconstruise la table "à l'envers".



    Une sur indexation conduisant parfois à des problématiques pire (deadlock interne par exemple) que la sous indexation (lenteurs)

    Pour vous aider à y voir clair, utilisez les requêtes que j'ai mis au point ici :
    http://blog.developpez.com/sqlpro/p9...s_index_anorma
    http://blog.developpez.com/sqlpro/p1...index_inutiles

    Vérifiez l'usage de vos index à l'aide de sys.dm_db_index_usage_stats avec suffisament de recul (au moins 1 mois d'existence de l'index).
    Comme SQL Server ne trace pas la date de création des index, je vous suggère d'incorporer cette date dans le nom de l'index.

    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 expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    Merci pour toutes ces explications.
    Je vais reprendre mes index.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

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

Discussions similaires

  1. [AC-2003] Enlever reférence manquante mais présente dans le GUID
    Par JPaul94300 dans le forum VBA Access
    Réponses: 0
    Dernier message: 25/11/2009, 18h38
  2. [EF] Objet attaché mais non présent lors d'un select
    Par psion2 dans le forum Accès aux données
    Réponses: 5
    Dernier message: 23/02/2009, 12h53
  3. Réponses: 10
    Dernier message: 06/01/2009, 12h04
  4. lib manquante, mais elle est bien là
    Par robert_trudel dans le forum Struts 2
    Réponses: 1
    Dernier message: 14/03/2008, 10h23
  5. Librairies manquantes mais lesquelles?
    Par titof90 dans le forum VBA Access
    Réponses: 3
    Dernier message: 08/06/2007, 19h04

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