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 :

Index pas utilisé


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Par défaut Index pas utilisé
    Bonjour à tous,

    j'ai une requête qui utilise un BETWEEN sur une date, la requête est pas super longue en soit, mais le cout est assez élevé (18 000).

    J'ai vu que j'avais le droit à un full scan de ma table, il n'utilise pas mon index sur la date.

    Est-ce que le format date est particulier pour l'utilisation de son index ?

    Quand je fais un = l'index est bien utilisé. et mon coût tombe à 16

    Merci de votre aide.

  2. #2
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    Soit tu as un problème de stats, soit c'est tout bête (X between A and B) est à éviter selon l'Oracle, il vaut mieux utiliser ((X>=A) and (X<=B)).

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Par défaut
    Ah je savais pas du tout qu'il fallait éviter BETWEEN.

    Mon coût est identique.

    Je ne dois pas avoir de problème de stats car c'est pas la première fois que je remarque ce problème d'index (sur d'autres tables)

  4. #4
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    Eviter le BETWEEN date de la 8i, je ne sais si il est toujours d'actualité mais moi j'évite.

    Je pencherais pour le problème de stats, lances un recalcul de tes statistiques sur la table et refais un test. Après il se peut que passer par l'index lui coûte réellement physiquement plus que de faire un FTS, d'où son choix.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Par défaut
    Je pencherais plus pour ce que tu dis.
    Pour faire simple je fais un between du une même date mais entre 0h et 23h59 pour tout récupérer.

    Peut-être devrais-je indéxer un to_char(date, 'mmyy') et du coup avoir un = ma_date dans le where ?

  6. #6
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    Si tu recherche tous les enregistrements d'un seul jour donné dans ce cas il y a plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ... where trunc(monchampsdate)=to_date('28/05/2008','DD/MM/YYYY');

  7. #7
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par philcero Voir le message
    Soit tu as un problème de stats, soit c'est tout bête (X between A and B) est à éviter selon l'Oracle, il vaut mieux utiliser ((X>=A) and (X<=B)).
    Peut tu nous donner le lien où t'a trouvé ça ? Moi je ne le crois pas.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Peut tu nous donner le lien où t'a trouvé ça ? Moi je ne le crois pas.
    Hop jte prends par la manche en passant
    Que penses-tu de mon problème ?

  9. #9
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Poste déjà la requête, version simplifié pour qu'on voit de quoi il s'agit (je n'aime pas deviner).

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Par défaut
    Dans un premier temps je voulais savoir s'il était normal qu'un index sur une date ne soit pas pris en compte avec BETWEEN.
    Si oui , alors je vais trouver une autre soluce, si non je poste la requête

Discussions similaires

  1. Mon index n'est pas utilisé quand j'ajoute un champ
    Par frederic.bouchery dans le forum Requêtes
    Réponses: 10
    Dernier message: 19/03/2012, 14h01
  2. Réponses: 3
    Dernier message: 16/11/2011, 11h26
  3. mon index n'est pas utilisé
    Par varex dans le forum Débuter
    Réponses: 8
    Dernier message: 14/01/2010, 15h40
  4. INDEX pas utilisé avec les <
    Par vodnok dans le forum Débuter
    Réponses: 6
    Dernier message: 07/03/2008, 10h11

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