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 :

Oracle n'utilise pas le facteur de séléctivité


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 69
    Par défaut Oracle n'utilise pas le facteur de séléctivité
    Bonjour;
    Je pensais que pour choisir le chemin d'accès à ue table Oracle utilise le facteur de selectivité, s'il est important il utilise un index s'il existe sinon il fait un access full, mais en faisant une petite expérience j'ai trouvé que ce n'étati pas le cas :

    j'ai fait un select * sur une table de 200000 bytes il a utilisé un access full

    puis j'ai augmenté la condition de selection jusqu'à atteindre une taille estimé de 15000 bytes donc la taille a vraiment diminué, mais il a aussi utilisé un access full, puis j'ai encore augmenté la condition de séléction jusqu'à atteindre 38 bytes et ce n'est que là qu'Oarcle a utilisé un index


    Par contre j'ai fait un select * sans condition sur une table de 200 bytes il a utilisé un access full, puis j'ai ajouté une condition de séléction sur un attribut mais sans que la taille diminue donc le facteur de séléctivité = 1 et là Oracle utilise un index.
    donc je pense que pour choisir un chemeni d'accés oracle ne s'appuie que sur la taille estimée après la séléction.


    pouvez vous m'expliqué a quoi sert finalement le facteur de selectivité qu'on rencontre dans la littérature?????????????

    merci

  2. #2
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    En fait, oracle s'appuie sur une estimatoin du coût.
    Le calcul du coût s'appuie sur une estimation des cardinalités (nb d'enregistrements renvoyés par chaque opération).
    Le calcul des cardinalités s'appuie sur une estimation de la selectivité des prédicats.

    Donc oui la selectivité a une part importante dans la détermination du plan d'exécution.

    Si tu donnes toutes les infos de ton test (requête, plan d'exécution et statistiques des objets) alors on peut faire le calcul.

    Sur le premier test, le choix d'un full table scan pour une selectivité > 2%, celà ne m'étonnes pas. Le full table scan va lire 50 fois trop de données, mais il va les lires très très vite. L'index va lire que ce qui est nécessaire, mais plus lentement...


    Sur le deuxième test, si la table fait de 200 bytes, on ne peut pas en tirer beaucoup de conclusion. C'est minuscule ! Les métadonnées (dictionnaire, segment header, block header,...) sont plus importants que les données !

    Cordialement,
    Franck.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 69
    Par défaut
    Bonjour;
    Je vous remercie pour votre reponse.
    Alors si pour lire 50 fois plus de données il choisit comme meme le full scan, l'index ne sert à rien dans ce cas, pouvez vous m'expliquer cela?
    Merci

  4. #4
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Un exemple:

    Tu as une grosse encyclopédie, plusieurs tomes plus un index.

    Si tu recherche les articles parlant d'un sujet précis, genre tout ce qui traite de 'ORACLE' tu prends l'index et il va t'amener sur quelques articles.

    Par contre, si tu cherches un sujet tellement vaste que tu vas tomber sur la moitié des articles (genre tout ce qui traite d'un mot commencant par 'O'). Alors ce sera plus rapide de parcourir toute l'encyclopédie reapidement, plutot que d'aller voir un miller de fois index - numéro de page - article - index - numero de page - article ...

    Cordialement,
    Franck.

Discussions similaires

  1. Oracle n'utilise pas mes index
    Par piloupolo dans le forum PL/SQL
    Réponses: 14
    Dernier message: 18/08/2011, 14h33
  2. Pourquoi Oracle n'utilise pas mes index ?
    Par yaggi64 dans le forum SQL
    Réponses: 4
    Dernier message: 25/11/2007, 16h03
  3. Oracle n'utilise pas tous mes CPUS
    Par noumayoss dans le forum Oracle
    Réponses: 3
    Dernier message: 12/04/2006, 09h17
  4. [ADO.Net][C#/Oracle] Comment utiliser une requête paramètrée ?
    Par kaboume dans le forum Accès aux données
    Réponses: 4
    Dernier message: 05/07/2005, 14h50
  5. Services Oracle ne démarre pas sans connexion réseau??
    Par dreamanoir dans le forum Oracle
    Réponses: 6
    Dernier message: 22/02/2005, 00h44

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