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

Administration Oracle Discussion :

Access Full sur une table


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut Access Full sur une table
    Bonjour,

    Lors de l'exécution de la requete dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TO_DATE (dcrcte, 'ddmmyyyy')
      FROM table
     WHERE TO_DATE (dcrcte, 'ddmmyyyy') >= TO_DATE (9, 'mm')
     AND numclict|| TO_CHAR (cprctect, 'FM0000')|| TO_CHAR (cagctect, 'FM000') || TO_CHAR (norctect, 'FM00') = '1254874548742'
    J'ai un full access à cette table du à la colonne dcrcte. J'ai créé un index sur cette colonne et je l'ai analyse mais toujours meme résultat.

    Dans la requete j'ai changé || par concat mais en vain.

    Merci de votre apport.

  2. #2
    Membre émérite Avatar de jkofr
    Homme Profil pro
    Senior Consultant DBA (Trivadis SA)
    Inscrit en
    Octobre 2006
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Senior Consultant DBA (Trivadis SA)
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 484
    Par défaut
    Hello

    Ta colonne est de type date?

    Si elle ne l'ai pas, alors tu as interret a la changer en type date.

    D'une manière générale, Oracle n'utilise pas lindex quand tu fait référence a la colonne avec un appel de fonction.

    Si ta colonne est bien de type date et que tu veux absolument ce format de date, change le format de la date au niveau session.
    Pour le valider essaye ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SELECT TO_DATE (dcrcte, 'ddmmyyyy')
    FROM table
    WHERE dcrcte  like '09%'
    AND numclict|| TO_CHAR (cprctect, 'FM0000')|| TO_CHAR (cagctect, 'FM000') || TO_CHAR (norctect, 'FM00') = '1254874548742'
    Jko

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut
    Merci pour votre retour.
    Au fait,
    Ta colonne est de type date? Non elle est de type VARCHAR

    Si elle ne l'ai pas, alors tu as interret a la changer en type date. Il s'agit d'une table sur laquelle j'ai le droit de lecture seulement (Elle appartient à un autre schéma)

    Je viens de tester la requete proposée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT to_date(DCRCTE, 'ddmmyyyy')
    FROM TABLE
    WHERE dcrcte  LIKE '%092009'
    AND numclict|| TO_CHAR (cprctect, 'FM0000')|| TO_CHAR (cagctect, 'FM000') || TO_CHAR (norctect, 'FM00') = '1254874548742'
    Le résultat est meilleur qu'avant 11 sec au lieu de 28 sec, j'ai mis '%092009' pour retourner tous les jours du mois 09/2009 au lieu de '09%' qui va retourner tous les jours 09, mois 09 et année **09.

    D'une manière générale, Oracle n'utilise pas lindex quand tu fait référence a la colonne avec un appel de fonction : Pour quoi le problème n'existe pas sur TO_CHAR (norctect, 'FM00') par exemple. L'index est sur le champs norctect et on utilise une foction.

    Merci d'avance

  4. #4
    Membre émérite Avatar de jkofr
    Homme Profil pro
    Senior Consultant DBA (Trivadis SA)
    Inscrit en
    Octobre 2006
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Senior Consultant DBA (Trivadis SA)
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 484
    Par défaut
    Tu peux afficher le plan d'exécution?
    Suis sur que tu as aussi un full scan.

    Jko

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous pouvez créer un index sur votre fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE INDEX i_matable_dctre_dt
    ON TO_DATE(matable.dcrcte, 'ddmmyyyy')
    Mais cet index est-il plus discrimant que la concaténation du filtre suivant ?

    Mais d'une manière générale, on essaie effectivement de faire les opérations sur les constantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT to_date(DCRCTE, 'ddmmyyyy')
      FROM MaTable
     WHERE TO_DATE(dcrcte, 'ddmmyyyy') >= TO_DATE ('092009', 'mmyyyy')
       AND numclict = '1254'
       AND cprctect = 8745
       AND cagctect = 487
       AND norctect = 42

  6. #6
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut
    Bonjour,

    Une image du plan d'exécution est jointe

    Nom : Access_Full.JPG
Affichages : 200
Taille : 40,1 Ko

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut
    Merci infiniment WALDAR le résultat est OK manant. Et merci à vous tous.

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

Discussions similaires

  1. [C#/ACCESS] Event sur une table access
    Par pitipilot dans le forum C#
    Réponses: 2
    Dernier message: 16/10/2014, 08h50
  2. Access 2000 droits sur une table
    Par yepAccess dans le forum Sécurité
    Réponses: 1
    Dernier message: 06/12/2007, 22h25
  3. [9i] Eviter un table access full via une vue
    Par Débéa dans le forum SQL
    Réponses: 10
    Dernier message: 25/10/2006, 23h09
  4. [Access] Requête sur une table et tri sur une autre
    Par VooDooS dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/08/2006, 15h07
  5. Copie enregistrement sur une table access
    Par sgai2 dans le forum Access
    Réponses: 2
    Dernier message: 24/03/2006, 13h42

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