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 :

performance des index sur une requete


Sujet :

SQL Oracle

  1. #1
    Invité
    Invité(e)
    Par défaut performance des index sur une requete
    Bonjour,

    J'ai une table d'asso qui ressemble en gros à çà :
    ID : PK
    REFA : clé étrangère vers une table A
    REFB : clé étrangère vers une table B

    Ma table a environnement 1 million d'enregistrements.

    Il y a un index non unique sur la colonne REFA.
    et un autre non unique sur la colonne REFB.

    J'ai aussi une requête qui fait çà :
    select REFB from MATABLE where REFA = ?

    Je viens de remarquer la chose suivante. J'ai crée un index UNIQUE
    sur les colonnes (REFA,REFB) et depuis, la requête est beaucoup plus
    performante.

    Donc j'en déduis que sur ce genre de table, il vaut mieux 2 index
    uniques (REFA,REFB) et (REFB,REFA) que un index non unique sur chaque
    colonne. Ca va augmenter la taille de mes index mais bon...

    Si vous pouvez me renseigner là dessus.... merci

  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
    J’aurais crée la table avec seulement les colonnes REFA, REFB et une contrainte de type clé primaire et donc automatiquement un index unique REFA, REFB. Bon il faut analyser les requêtes pour décider finalement l’ordre des colonnes dans l’index.

    Dans votre cas il est normal que la requête soit plus rapide parce que dans le premier cas il y a un accès à l’index suivi d’un accès à la table; dans le deuxième cas l’index suffit pour répondre à l’interrogation.

    Il n’est ni possible ni envisageable de créer les deux indexes comme vous le proposez (un REFA,REFB et un autre REFB, REFA). Dans le pire des cases vous pouvez créer un index sur REFA, REFB et un autre sur REFB seule.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ah oui, c'est çà que j'avais zappé... il n'y a plus besoin d'aller voir
    dans la table vu que toutes les données sont dans l'index.

    Merci.

Discussions similaires

  1. Pb avec des ; sur une requete sql de type INTO OUTFILE
    Par KillGunBlood dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/06/2008, 14h25
  2. Réponses: 1
    Dernier message: 28/02/2008, 08h17
  3. Réponses: 1
    Dernier message: 16/10/2007, 18h20
  4. Réponses: 1
    Dernier message: 28/03/2007, 12h23
  5. INSERER DU TEXTE AVEC DES CHAMPS DANS UNE REQUETE SUR sql Srv 2000
    Par sauceaupistou dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/03/2007, 10h02

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