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 cluster et clef primaire


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut Index cluster et clef primaire
    Hello,

    J'aimerais avoir votre avis sur ce qui est dit dans cet article.

    Personnellement, je me borne à laisser l'index cluster sur la clef primaire de la table (dans 95% des cas, une colonne int identity(1,1)).

    Qu'en est-il des pratiques de nos MVP's et autres pros du secteur ?

  2. #2
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Par défaut
    Ca dépend des statistiques d'utilisation des indexs de ta table.
    Une piste : si tu as un clustered index avec très peu de seek et beaucoup de LookUp + un non clustered index avec beaucoup de seek, ca pourrait être intéressant de convertir ta pk en non clustered et passer l'autre index en clustered.

  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
    Effectivement il y a des cas ou l'index clustered n'est pas satisfaisant.

    Les cas d'insatisfaction sont les suivants :
    • clef longue ou composée de nombreuses colonnes
    • valeurs très arbitraires
    • clef fréquemment mise à jour

    En effet, la valeur de la clef clustered va être reprise dans les autres index. Si elle est longue elle pèse sur chacun des index secondaires. Si elle est composée, les statistiques sont moins bonne (seule la 1ere colonne est "statitisée").
    Si les valeurs sont très arbitraires (donc non monotone) alors la table se fragmente vite (l'index clustered étant la table), De même en cas d'UPDATE.

    D'autre part l'article fait des métriques qu'en ce qui concerne le lookup et se focalise sur une problématique. C'est l'arbre qui cache la forêt !

    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 expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    @darkelend :
    bien compris
    @sqlpro :
    En normalisant correctement et en faisant plaisir à Mr Tabourier, on obtient alors (à l'exception des tables résultant d'une association n à n) que des clefs qui ne sont pas composées, qui ne varient pas et qui ne sont pas aléatoires.
    Cela s'applique-t-il alors encore ?
    Mais je note ta remarque concernant le fait que l'article ne traite que des key lookup.

  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
    Citation Envoyé par Kropernic Voir le message
    @darkelend :
    bien compris
    @sqlpro :
    En normalisant correctement et en faisant plaisir à Mr Tabourier, on obtient alors (à l'exception des tables résultant d'une association n à n) que des clefs qui ne sont pas composées, qui ne varient pas et qui ne sont pas aléatoires.
    Cela s'applique-t-il alors encore ?
    Non, mais si la table d'association n/m comporte de nombreuses colonnes clef, alors on peut la transformer en une table avec une clef auto CLUSTERED (par défaut) + contrainte UNIQUE (donc index non clustered).
    Mais je note ta remarque concernant le fait que l'article ne traite que des key lookup.
    Et oui....

    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. [2008R2] [index]Redondant index Clef primaire (clustered) et simple index
    Par zoltix dans le forum Administration
    Réponses: 7
    Dernier message: 10/07/2015, 16h09
  2. clef primaire ou index unique
    Par jose.ignacio.agata dans le forum SQL
    Réponses: 1
    Dernier message: 25/01/2008, 13h25
  3. index et clef primaire et étrangère
    Par stos dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/09/2006, 08h59
  4. Clef primaire access, Indexé avec doublon
    Par Asurmena dans le forum Access
    Réponses: 1
    Dernier message: 05/06/2006, 11h04
  5. Difference entre Clef primaire et Index
    Par vijeo dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 16/05/2006, 16h07

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