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

SQL Oracle Discussion :

Lenteur requête avec count


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 16
    Points
    16
    Par défaut Lenteur requête avec count
    bonjour,
    j'ai un problème avec une requette comprenant un count qui est tres lente.
    je suis sous oracle 9i
    ma table a moins de 500.000 enregistrements
    ma requette est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select count(*) from f_ticket
    where tic_usa_id='HAS013'
      and tic_rel_id is not null
      and tic_date_abattage>='01/09/2008'
      and tic_date_abattage<='30/09/2008'
    + de 4 secondes le count retourne 1507 enreg.

    la requette suivante sans tic_usa_id='HAS013' and
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select count(*) 
    from f_ticket 
    where  tic_rel_id is not null 
      and tic_date_abattage>='01/09/2008'
      and tic_date_abattage<='30/09/2008'
    temps 0,031s et 1597 enregs
    le champs tic_usa_id est indexé

    avez vous une idée et est ce qu'il y a un paramétrage sur oracle a faire
    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    cf : http://sheikyerbouti.developpez.com/
    Article sur l'optimisation.
    Regarde dans tes indexes et statistiques.

  3. #3
    Membre actif Avatar de kore62
    Profil pro
    Inscrit en
    Août 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 222
    Points : 205
    Points
    205
    Par défaut
    Si ton champ 'tic_date_abattage' est de type date fait plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tic_date_abattage<=to_date('30/09/2008','DD/MM/YYYY')
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tic_date_abattage<='30/09/2008'

    Sinon Oracle converti le champ tic_date_abattage en chaine de caractère et fait la comparaison ensuite...

    La dans l'autre cas il compare deux date...

    Quand tu as créé tes index, t'es tu assuré d'avoir faire les stats sur tes tables...

    Comme ca Oracle pourra choisir le plan d'execution le mieux approprié pour effectuer ta requête...

    Car il n'est pas forcé qu'Oracle utilise les index si un full scan se montre plus performant. D'où l'intérêt des stats sur tes tables lorque tu cré des index...

    ++

Discussions similaires

  1. Requête avec Count().
    Par SirDarken dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/07/2008, 18h14
  2. Imbrication de 2 requête avec "count" et division
    Par Chtulus dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/04/2008, 14h12
  3. Lenteur requête avec 17 LEFT JOIN. Comment l'optimiser?
    Par spitou_77 dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/10/2007, 16h44
  4. requête avec COUNT ?
    Par delphim dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/02/2005, 14h46
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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