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

Oracle Discussion :

Réflexion sur les INDEX ... !!! ??? !!!


Sujet :

Oracle

  1. #1
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut Réflexion sur les INDEX ... !!! ??? !!!
    Bonjour à tous ...

    Je travail sur :

    Oracle 9.i
    Windoes Xp Pro

    En arrivant au travail de matin une personne de mon entourrage m'a posé une question qui est la suivante :

    Si j'ai une table tb_personnes dans laquelles j'ai beaucoup d'enregistrement et que j'aimerais rechercher tout les noms de famille des personnes qui finissent par la lettre "o" comment puis-je faire pour que le temps de recherche soit limité ?

    Je lui ai répondu qu'il fallait créer un index sur la colonne sur laquelle il veut faire sa recherche.

    Et il m'a répondu : Oui je suis d'accord mais si le temps recherche avec index est le même que le temps de recherche sans idex que puis-je faire ???

    Je suis très embèté car je ne sais pas quoi y répondre, je pense qu'il doit y avoir une histoire d'arbre là derrière ... comme des btree ou je sais pas quoi ... je suis débutant en Oracle ...

    Es ce que quelqu'un pourrait m'aider ???

    merci de vos réponses et à tout bientôt ...

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Bonjour snoppy ,
    Et bien sachez que dans le cas d'un index b-tree votre ami dit vrai,
    Car un index de ce type ( en arbre ) a tout bonnement besoin d'un point d'entrée dans ces différentes feuilles pour effectuer une recherche.

    Lorsque vous faites une recherche avec like '%xxx' vous ne fournissez pas de point d'entrée car la valeur recherché peut commencer par n'importe quoi.

    Combien de colonnes veut il ramener ?
    Si il veut ramener peu de colonnes peut être qu'en les inclaunt dans l'index celui ci donnera un FAST FULL SCAN qui peut parfois être plus rapide qu'un FTS

    Jaouad

  3. #3
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Un exemple pour illustrer tout cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    SQL>  set autot trace exp 
    SQL>  select EMPLID , NAME_TYPE  ,name  ,NAME_AC   from ps_names  where emplid like '%021131' ;
     
    Plan d'exécution
    ----------------------------------------------------------
       0      SELECT STATEMENT Optimizer=CHOOSE (Cost=47 Card=1565 Bytes=4
              8515)
     
       1    0   TABLE ACCESS (FULL) OF 'PS_NAMES' (Cost=47 Card=1565 Bytes
              =48515)
     
     
     
     
    SQL>  select EMPLID , NAME_TYPE  ,name  ,NAME_AC   from ps_names  where emplid like '021131%' ;
     
    Plan d'exécution
    ----------------------------------------------------------
       0      SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=2 Bytes=62)
       1    0   TABLE ACCESS (BY INDEX ROWID) OF 'PS_NAMES' (Cost=3 Card=2
               Bytes=62)
     
       2    1     INDEX (RANGE SCAN) OF 'PS_NAMES' (UNIQUE) (Cost=2 Card=2
              )
     
     
     
     
    SQL>

  4. #4
    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
    un index de fonction sur SUBSTR(col,-1) serait probablement plus favorable

  5. #5
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Le point d'entrée .... ??? Si par exemple je fais une recherche avec :
    là, j'ai un point d'entrée
    Voila t'a tout compris .

    Si on te dit de chercher un mot dans un dictionnaire qui se termine par Z tu sera bien enbête parce que tu devras parcourir tout le dictionnaire ,
    mais si tu as besoin d'un mot qui commence par Z , il te suffit d'aller dans l'index récupéré toutes les pages ou se trouve les mots qui commence par Z et remonter l'infomation

    Le dictionnaire est ta table
    L'index est l'index
    Le numéro de page est le ROWID

    est ce plus clair ?

    Jaouad

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

Discussions similaires

  1. Question sur les index
    Par Veve44 dans le forum Oracle
    Réponses: 3
    Dernier message: 09/11/2005, 14h01
  2. Question sur les index
    Par barok dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 31/05/2005, 08h06
  3. [DB2] Question sur les index et les vues
    Par ahoyeau dans le forum DB2
    Réponses: 1
    Dernier message: 14/03/2005, 08h30
  4. [Java 5] Réflexion sur les énumérations type-safe
    Par rozwel dans le forum Langage
    Réponses: 5
    Dernier message: 04/12/2004, 20h34
  5. Questions sur les indexations
    Par freud dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/05/2004, 11h38

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