Indexation des champs

freeman.7 Messages postés 1 Statut Membre -  
Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai une base de données Oracle et j'ai une application ou ya des requetes pour faire des recherche sur la base.

je voudrai optimiser ces recherches en indexant les champs de la base. Quelles sont les critères pour choisir les champs qu'on doit indexer.

Merci.

P.S: Je suis un nouveau membre les amis.
Configuration: Windows 2000
Internet Explorer 6.0

5 réponses

  1. Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   1 393
     
    Bonjour freeman,

    En fait, il n'existe pas de règle absolue, cela dépend de tes requêtes et du nombre d'enregistrements dans ta table.
    Si tu veux que je te donne un exemple concret, donne ta table en clair (c-à-d le nom des colonnes ainsi que leur type), la (ou les requêtes) sur cette table et également le nombre d'enregistrements.
    A plus et bienvenu sur CCM.
    1
  2. Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   1 393
     
    Bonjour,
    Dans ce cas, tu devrais avoir une clé primaire (et probablement unique) sur la colonne ID_ENTREPRISE pour ta table PP_entreprise, et une autre clé primaire sur la colonne ID_ENTREPRISE pour ta table PP_ENT_COMPORTE mais si tu avais aussi inclus dans ton post la table PP_ENT_COMPORTE afin de vérifier si tu dois utiliser une clé primaire ou non?
    Il ne faut pas créer des clés pour toutes les requêtes, car le nombre de clé sur une table influence le temps mis pour créer de nouveaux enregistrements.
    A plus
    1
  3. Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   1 393
     
    Bonjour,

    Je ne te comprends pas bien, ta clé primaire est un index (ID_ENTREPRISE)
    Tu peux également mettre un index (ID_ENTREPRISE,TYPE_ENT,ID_PP) sur ta table PP_ENT_COMPORTE
    cela devrait optimiser les requêtes ayant comme condition
    ID_ENTREPRISE = ... et ENT_ID = .. et ID_PP = .. ou
    ID_ENTREPRICE = ... et ENT_ID = ..
    mais pas une requête ayant comme condition
    ID_PP = ..
    Dans ce cas, tu devrais mettre un autre index sur (ID_PP)

    A plus
    1
  4. freeman.7
     
    Re christounet je te remercie pour ton interet
    alors je te donne un exemple dune table k g ds la base et sur lakelle japplik une requete
    Nom table: PP_Entreprise
    Champs Type Null

    ID_Entreprise Number No
    Nom_Entreprise Varchar2(50) Yes
    ADDR_ENTREPRISE VARCHAR2(80) YES
    VILLE_ENTREPRISE VARCHAR2(30) YES
    FAX_ENTREPRISE VARCHAR2(20) YES
    TYPE_ENTREPRISE VARCHAR2(2) YES
    QUALIFIE_ENTREPRISE VARCHAR2(3) YES
    COMMANTAIRE_ENTR... VARCHAR2(200) YES
    ID_MEDECIN NUMBER YES
    EN_COURS_DE_MODIF VARCHAR2(8) YES

    et j'ai la requete suivante sur VB6

    sql = "select NOM_ENTREPRISE " & _
    "from PP_ENTREPRISE, PP_ENT_COMPORTE " & _
    "where PP_ENTREPRISE.ID_ENTREPRISE = PP_ENT_COMPORTE.ID_ENTREPRISE " & _
    "and TYPE_ENT = 'EE' " & _
    "and ID_PP = " & idPP

    J'espere que c'est assé clair.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. freeman.7
     
    Re,

    mon probleme ce n'est pas la clé primaire c'est plutot comment choisir le champs a indexer.

    A+
    0