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

MS SQL Server Discussion :

[SQL2008][SQL2012] Index Clusterisé Vs Include


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 698
    Points : 586
    Points
    586
    Par défaut [SQL2008][SQL2012] Index Clusterisé Vs Include
    Bonjours a tous,

    Aujourd'hui en surfant je suis tombé sur un article ou un gars par des indexes.

    En résumé ça dit que si une table à un index clusterisé, il est utilisé comme pointeur sur le record.

    Du coup, je me demandais si c'est pertinent d'inclure (INCLUDE) des colonnes dans mes indexes lors que la table ou je suis entrain de le créer à un index clusterisé.

  2. #2
    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
    En résumé ça dit que si une table à un index clusterisé, il est utilisé comme pointeur sur le record.
    Pour être très concis un index cluster est la table triée selon l'ordre de la clé définie dans cet index. Le niveau feuille de l'index contient les lignes de données de la table.

    Du coup, je me demandais si c'est pertinent d'inclure (INCLUDE) des colonnes dans mes indexes lors que la table ou je suis entrain de le créer à un index clusterisé.
    Je suppose que tu parles de tes index non clusters. En général on inclut des colonnes (via INCLUDE) pour que l'index soit couvrant c'est à dire que l'index concerné satisfait à lui seul le prédicat d'une ou plusieurs requêtes et les colonnes qui doivent être retournées. Cela peut avoir du sens de faire cela dans certains cas pour éviter d'avoir à utiliser les opérations de lookup d'index qui peuvent être consommateurs dans certains cas. (on parcourt l'index non cluster et on doit également parcourir l'index cluster pour retourner les colonnes manquantes dans l'index non cluster). Tu peux voir ce que j'ai écrit ici.

    ++

  3. #3
    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,

    Il faut noter deux choses :

    - Il n'est nul besoin de rajouter en clé d'un index non-cluster une des colonnes de l'index cluster, puis que celle-ci est déjà contenue dans un tel index, du fait du pointage

    - l'INCLUDE est pratique pour éviter les RID / Key lookup, et il faut comprendre que les colonnes de la clause INCLUDE sont au niveau feuille seulement de l'index non-cluster. Elles servent typiquement pour des colonnes qui sont entre le SELECT et le FROM. Retenez aussi qu'elles rendent toute modification sur les colonnes un peu plus "pénibles".

    @++

  4. #4
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Bonjour,

    Il faut noter deux choses :

    - Il n'est nul besoin de rajouter en clé d'un index non-cluster une des colonnes de l'index cluster, puis que celle-ci est déjà contenue dans un tel index, du fait du pointage
    Je me permet d'indiquer qu'il y a des exceptions : on peut vouloir rajouter une telle colonne pour bénéficier du tri de l'index.

Discussions similaires

  1. [SQL2008][SQL2012] Select From With(NoLock)
    Par Donpi dans le forum MS SQL Server
    Réponses: 27
    Dernier message: 19/10/2012, 15h00
  2. [SQL2008][SQL2012] Stat utilisation SP + Creation_time
    Par Donpi dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 18/07/2012, 09h51
  3. [SQL2012] Indexes Manquants interpretation de données
    Par Donpi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/06/2012, 11h43
  4. Fragmentation d'un index clusterisé
    Par Roubachof dans le forum Optimisations
    Réponses: 12
    Dernier message: 09/03/2010, 18h22
  5. Index clusterisé
    Par chris_013 dans le forum Administration
    Réponses: 3
    Dernier message: 09/01/2009, 13h13

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