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 :

SQL Server 2008 - index unique ou non unique ?


Sujet :

Administration SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Points : 18
    Points
    18
    Par défaut SQL Server 2008 - index unique ou non unique ?
    Bonjour,

    Je suis en cours d'optimisation d'une base de données en ajoutant certains index indispensables. Une question se pose avec différentes personnes et des avis différents sur les index.

    Pour de meilleurs performances, faut-il privilégier des index unique (en ajoutant les champs ad'hoc) ou des index non-uniques ont-ils un même niveau de performance ? Dans mon cas bien précis (recherche sur une valeur d'une colonne état), j'ai 90% de la table avec la même valeur (état terminé) et 10% avec d'autres valeurs (état en cours, ...).

    Merci d'avance,

    François

  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
    Bonjour,

    Il faut savoir qu'un index non unique se verra ajouté une donnée supplémentaire UNIQUEIFIER (taille 4 octets) pour pouvoir gérer l'unicité des lignes. Bien que l'index ne soit pas déclaré unique, SQL Server a besoin d'identifier de manière unique une ligne d'index pour pouvoir la retrouver.

    Cela implique également qu'à chaque fois qu'une ligne de données est insérée dans votre table, SQL Server doit gérer et ajouter un UNIQUIFIER correspondant.

    Sur une table volumineuse, vous risquez d'avoir un impact sur votre stockage d'une part et si vous votre index est souvent mis à jour vous aurez un surcoût lié à la gestion des UNIQUIFIER.

    Dans votre cas, selon l'état que vous recherchez, vous pouvez espérer l'utilisation de votre index. (Etat <> TERMINE).

    ++

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Merci pour ces détails, très intéressant. Par contre, en final, quel est la meilleure solution, en particulier pour "booster" les select ?

    Fançois

  4. #4
    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
    - D'avoir toujours une clause de restriction (WHERE) avec votre SELECT
    - D'avoir des prédicats dit sargeables : C'est à dire des prédicats qui peuvent tirer parti de vos index
    - Placer les bons types d'index aux bons endroits
    ...

    ++

Discussions similaires

  1. Optimisation Index SQL SERVER 2008 R2
    Par zerjad dans le forum Administration
    Réponses: 3
    Dernier message: 20/01/2012, 18h01
  2. [Débutant] Erreur (Nom de colone non valide) sql server 2008 et vb.net
    Par zayoub dans le forum VB.NET
    Réponses: 2
    Dernier message: 20/07/2011, 02h38
  3. Réponses: 5
    Dernier message: 07/04/2011, 11h18
  4. [SQL Server 2008 R2]Identifiants uniques
    Par Higgins dans le forum Réplications
    Réponses: 13
    Dernier message: 11/06/2010, 09h28
  5. [SQL SERVER 2K] Index clustered et non clustered
    Par dens19 dans le forum Administration
    Réponses: 3
    Dernier message: 26/03/2009, 19h38

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