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

SQL Oracle Discussion :

Index VS Clé primaire : performance ?


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 84
    Par défaut Index VS Clé primaire : performance ?
    Bonjour,

    Je dois comparer 2 tables très volumineuses, de structure identique, sans index ni clé primaire.

    Je me pose la question suivante pour améliorer les performances :

    Dois-je créer une clé primaire ou un index pour optimiser mes comparaisons ?

    La création de la clé primaire va prendre beaucoup plus de temps que la création de l'index (non unique), mais est-ce que, in fine, je n'y perd pas en performance ?

    Merci d'avances pour vos éclaircissements.

    GB

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Relisez un peu Oracle concepts! La notion de clé primaire est tout à fait perpendiculaire à la notion d'index!
    création de la clé primaire va prendre beaucoup plus de temps que la création de l'index
    Pourriez-vous prouver cette affirmation ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 84
    Par défaut
    Bonjour,

    A la création, la clé primaire va devoir parcourir toute la table pour s'assurer que la contrainte d'unicité qu'elle implique sera bien vérifiée.
    La création de l'index, non unique, n'implique pas de contrainte, donc pas de vérification.

    Attention ce n'est que mon avis de pas-expert, je peux donc me tromper

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Contrainte d’intégrité : son rôle est d’implémenter une règle de gestion. Je crée une contrainte pour renforcer une règle de gestion.

    Index : son rôle est d’accélérer parfois l’accès aux données. Je crée un index pour améliorer le temps de réponse des certaines requêtes.

    Clé primaire : interdit aux enregistrements d’une table d’avoir des valeurs nulle pour la colonne ou les colonnes concerné ou d’avoir la (les) même(s)
    valeur(s) pour plusieurs enregistrements.

    Une contrainte de type clé primaire pourrait créer ou pas un index unique ou pas!

    Vous voyez bien que ces sont deux notions qui ne couvre pas du tout le même périmètre et donc ne peuvent pas être comparées.

    Citation Envoyé par gwendal86 Voir le message
    ...

    Attention ce n'est que mon avis de pas-expert, je peux donc me tromper
    Depuis pas mal de temps les choses avancent suivant le schéma : on construit un modèle abstract pour expliquer le phénomène étudié et on fait des tests pour valider/invalider ce modèle. Créez une table avec un million de lignes par exemple et mesurer à plusieurs reprise les temps de réponse de commandes de création de la clé primaire et celle de la création juste d’un index unique.

    /Edit
    Mark Twain defined an expert as "an ordinary fellow from another town"

  5. #5
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Citation Envoyé par gwendal86 Voir le message
    A la création, la clé primaire va devoir parcourir toute la table pour s'assurer que la contrainte d'unicité qu'elle implique sera bien vérifiée.
    La création de l'index, non unique, n'implique pas de contrainte, donc pas de vérification.
    Les deux sont similaires et vont devoir parcourir toute la table, et trier les colonnes.
    En fait, un index est une structure triée, et la contrainte d'unicité utilise un index pour vérifier l'unicité.

    Par contre, pour la question initiale, si la requête de vérification n'est lancée qu'une seule fois il n'est pas intéressant de créer des index. L'index, c'est faire tout le travail de tri une fois pour en bénéficier pour toujours. Si c'est pour faire la comparaison une seule fois, autant que la requête de comparaison fasse ce travail sans avoir à le stocker.

    Cordialement,
    Franck.

  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 998
    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 998
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par gwendal86 Voir le message
    Bonjour,

    Je dois comparer 2 tables très volumineuses, de structure identique, sans index ni clé primaire.

    Je me pose la question suivante pour améliorer les performances :

    Dois-je créer une clé primaire ou un index pour optimiser mes comparaisons ?
    L'un étant une notion logique et l'autre un élément physique il est impossible de les comparer !
    Une clef induit une notion d'unicité et n'a pas forcément recours à un index en théorie, même si la plupart des SGBDR, y compris Oracle créé un index sous-jacent à la clef.
    Contrairement à une clef, un index n'est par forcément UNIQUE !

    La création de la clé primaire va prendre beaucoup plus de temps que la création de l'index (non unique), mais est-ce que, in fine, je n'y perd pas en performance ?
    Comme précédemment indiqué, il y a création d'index dans les deux cas et donc parcours de toutes les valeurs de la table... La seule différence est l'application ou non de l'unicité, et cet élément constitue une très faible charge en regard des algorithmes de tri nécessaires à la constitution de l'index...


    Merci d'avances pour vos éclaircissements.

    GB
    Vous devez donc trancher entre clef => unicité et index sans forcément le caractères UNIQUE....

    On ne peut pas savoir si l'unicité concerne les données de votre table. C'est à vous de trancher !

    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/ * * * * *

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par gwendal86 Voir le message
    Je dois comparer 2 tables très volumineuses, de structure identique, sans index ni clé primaire.
    Quelle genre de comparaison cherchez-vous à faire ?

Discussions similaires

  1. Utilité des index et mesure de performances
    Par bruce-willis dans le forum SQL
    Réponses: 8
    Dernier message: 04/06/2008, 13h56
  2. Indexation double clé primaire
    Par mora87 dans le forum Modélisation
    Réponses: 5
    Dernier message: 18/05/2007, 12h03
  3. Mise a jour de l'index de cle primaire
    Par Mercenary Developer dans le forum DB2
    Réponses: 2
    Dernier message: 10/10/2006, 21h15
  4. index et clef primaire et étrangère
    Par stos dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/09/2006, 08h59
  5. Réponses: 17
    Dernier message: 25/04/2005, 09h49

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