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 :

Index fonction sur une date


Sujet :

Oracle

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 49
    Points
    49
    Par défaut Index fonction sur une date
    Bonjour,
    en oracle 10g je souhaiterais créer un index fonction pour répondre à ces critères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE  A1.CODE=A2.CODE AND A1.DATE > (SYSDATE - 1)
    J'essaie de créer mon index tel que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE INDEX IDX ON TAB
    (CODE, DATE > (SYSDATE - 1))
    et j'obtiens cette erreur
    ORA-00907: missing right parenthesis
    , je n'arrive pas à résoudre cette erreur si quelqu'un peut m'aider?

    merci

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 124
    Points
    124
    Par défaut
    Bonjour à vous,

    Je pense que vous n'avez pas besoin d'un index de type fonction pour aider cette clause "where".


    Vous pouvez utiliser un index standard:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CREATE INDEX IDX ON TAB
    (CODE, DAT);
    Voici ce que cela donne (Regarder bien le plan d'exécution):
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    SQL> create table t2(cod varchar2(20), dat date, colonnebidon varchar2(20));
     
    Table created.
     
    SQL> INSERT INTO t2 values('ligne1',sysdate,'bidon');
     
    1 row created.
     
    SQL> INSERT INTO t2 values('ligne2',sysdate,'bidon');
     
    1 row created.
     
    SQL> commit;
     
    Commit complete.
     
    CREATE INDEX idx on t2(cod,dat);
     
    Index created.
     
    SQL> set autotrace on;
     
    SQL> select * from t2 where cod='ligne1' and dat > sysdate -1;
     
     
    COD                  DAT       COLONNEBIDON
    -------------------- --------- --------------------
    ligne1               17-JUN-14 bidon
     
     
    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 2658088595
     
    ------------------------------------------------------------------------------------
    | Id  | Operation                   | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    ------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT            |      |     1 |    33 |     2   (0)| 00:00:01 |
    |   1 |  TABLE ACCESS BY INDEX ROWID| T2   |     1 |    33 |     2   (0)| 00:00:01 |
    |*  2 |   INDEX RANGE SCAN          | IDX  |     1 |       |     1   (0)| 00:00:01 |
    ------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       2 - access("COD"='ligne1' AND "DAT">SYSDATE@!-1 AND "DAT" IS NOT NULL)
    Bonne journée.

    Sylvain

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Merci beaucoup j'ai suivi vos conseils

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

Discussions similaires

  1. fonction casse-tête sur une date
    Par clavier12AZQSWX dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/06/2009, 11h36
  2. Réponses: 2
    Dernier message: 19/02/2009, 09h46
  3. Réponses: 4
    Dernier message: 08/03/2008, 10h10
  4. Fonction DISTINCT ne fonctionne pas sur une date
    Par cramouille dans le forum Access
    Réponses: 5
    Dernier message: 25/10/2006, 15h42
  5. fonction MAX sur une date
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 08/09/2006, 14h59

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