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

Langage SQL Discussion :

Petite question sur les index


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Points : 68
    Points
    68
    Par défaut Petite question sur les index
    Bonjour,


    Est-il stupide de créer un index "unitaire" (sur un champs seulement), qui compose la clé primaire d'une table et qui est donc déjà indexé mais couplé avec d'autres champs ?

    Si oui, est-ce le cas quelque soit son positionnement dans la clé primaire (début, milieu ... fin) ?


    Merci à vous,

    ViRouF

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    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 849
    Points : 52 978
    Points
    52 978
    Billets dans le blog
    6
    Par défaut
    Que voulez-vous dire par couplé ? Avez vous un exemple ??

    A +

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Que voulez-vous dire par couplé ? Avez vous un exemple ??

    A +

    Relation R (champ1, champ2, champ3, ...)

    Est-il utile, ou complétement con de vouloir créer un index sur champ2 par exemple ?

    Car je me retrouve dans le cas où, sur SAP (basé sur du oracle 9) j'ai une table de 30 millions d'enregistrement et je dois en extraire une partie en faisant une restriction sur seulement une partie de la clé.

    Vu le temps que ça prend je cherche des solutions

    Merci

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 34
    Points : 30
    Points
    30
    Par défaut
    D'abbord, pardon mes erreurs. Je suis Americain et mon francais ne pas tres bien. J'apprends encore le français et j'apprécions des corrections.

    Si vous avez un index dans champ1, champ2, champ3, et vous faire SQL comment <<select * from table where champ2='ABC'>> Oracle ne pas utilise ce index.

    Pour ce SQL vous avez besoin de un index avec champ2 premier. Peut-etre comment champ2, champ3, et ca. Vous devait toujours utilisez le premier colonne dans votre index dans votre SQL.

    J'espère que vous pourrez me comprendre.

  5. #5
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par denverdba Voir le message
    D'abbord, pardon mes erreurs. Je suis Americain et mon francais ne pas tres bien. J'apprends encore le français et j'apprécions des corrections.

    Si vous avez un index dans champ1, champ2, champ3, et vous faire SQL comment <<select * from table where champ2='ABC'>> Oracle ne pas utilise ce index.

    Pour ce SQL vous avez besoin de un index avec champ2 premier. Peut-etre comment champ2, champ3, et ca. Vous devait toujours utilisez le premier colonne dans votre index dans votre SQL.

    J'espère que vous pourrez me comprendre.
    Ok je vous ai compris
    Quelqu'un pour confirmer ?

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    je confirme :
    SQL>create table matable (col1 number, col2 number);

    Table created.

    SQL>create index monind on matable(col1,col2);

    Index created.

    SQL>set autotrace on exp
    SQL>select * from matable where col2 = 1;

    no rows selected


    Execution Plan
    ----------------------------------------------------------
    0 SELECT STATEMENT Optimizer=CHOOSE
    1 0 TABLE ACCESS (FULL) OF 'MATABLE'



    SQL>select * from matable where col1=1;

    no rows selected


    Execution Plan
    ----------------------------------------------------------
    0 SELECT STATEMENT Optimizer=CHOOSE
    1 0 INDEX (RANGE SCAN) OF 'MONIND' (NON-UNIQUE)
    A ceci prêt qu'un simple changement de l'ordre des colonnes suffit à régler ce souci :
    SQL>drop index monind;

    Index dropped.

    SQL>create index monind on matable(col2,col1);

    Index created.

    SQL>select * from matable where col2 = 1;

    no rows selected


    Execution Plan
    ----------------------------------------------------------
    0 SELECT STATEMENT Optimizer=CHOOSE
    1 0 INDEX (RANGE SCAN) OF 'MONIND' (NON-UNIQUE)
    Il est souvent plus performant de faire un seul index de x colonnes que x indexes de 1 colonne, il convient donc de favoriser les indexes sur plusieurs colonnes en mettant les colonnes qui serviront toujours en 1° et les colonnes facultative après

  7. #7
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 09h40
  2. [DB2] Question sur les index et les vues
    Par ahoyeau dans le forum DB2
    Réponses: 1
    Dernier message: 14/03/2005, 08h30
  3. Réponses: 3
    Dernier message: 08/12/2004, 13h58
  4. Questions sur les indexations
    Par freud dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/05/2004, 11h38
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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