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 Firebird Discussion :

Incertitude sur les index


Sujet :

Administration Firebird

  1. #1
    Membre actif
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 416
    Points : 299
    Points
    299
    Par défaut Incertitude sur les index
    Bonjour,

    Une petites incertitude concernant le champ statistics de la table rdb$indices.
    Pouvez-vous me confirmer que plus la valeur de ce champ tend vers zéro, meilleure est la sélectivité de l'index concerné ?
    Ou d'une autre manière une valeur de statistics à 0.01 est moins bonne que 0.00001 ?

    Merci,
    “La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.” Antoine de Saint-Exupéry.

    D1..D7-2005,2006-Xe2 Ent-XE7 archi-MsSql 2005..2008 & R2, FB 1.5..2.5.x.x -Win10,Win7/64-Xp-
    _____________________________________________________

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    cette FAQ devrait répondre à la question
    note : j'en avais même proposé la traduction ici (somme de FAQ jamais publiées mais je ne sais pas si c'est accessible)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Citation Envoyé par castorcharly Voir le message
    Bonjour,

    Une petites incertitude concernant le champ statistics de la table rdb$indices.
    Pouvez-vous me confirmer que plus la valeur de ce champ tend vers zéro, meilleure est la sélectivité de l'index concerné ?
    Ou d'une autre manière une valeur de statistics à 0.01 est moins bonne que 0.00001 ?

    Merci,
    Oui c'est bien ça.

    Il me semble que c'est de zéro à 1. Zéro ne pouvant être atteint.

    1 est un cas particulier (toutes les valeurs sont identiques) et donc il est inutile d'avoir un index sur une tel colonne.

    0.5 correspondrait à un champ de type booléen et n'est pas intéressant non plus d'un point de vue sélectivité.

    Attention cependant une table avec peu d'enregistrement ne pourra pas avoir un index avec de bonnes statistiques...

    Une table avec 1 enregistrement aura des index avec une statistique de 1
    Une table avec 2 enregistrements aura des index avec une statistique de 1 ou 0.5 (1 si les valeurs des deux sont identiques...)
    2 -> 1 et 0.333
    etc..

    Statistique c'est quelque chose du genre 1/count(distinct champsIndexes)

    Donc conclusion si on veut travailler sur la sélectivité des indexes on comprend bien ici (même si ça parait logique) qu'il faut travailler sur un jeux de données cohérents en volumétrie.


    Les statistiques sont automatiquement recalculées lors de le restauration d'un base. Mais on peut forcer un recalcul par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET STATISTICS INDEX index_name;

  4. #4
    Membre actif
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 416
    Points : 299
    Points
    299
    Par défaut
    Merci,

    J'ai trouvé mon bonheur dans la FAQ que SergioMaster m'a placé en lnk.
    0= Meilleure valeur possible.
    0.5=Plus mauvaise valeur possible.
    1=Table vide ou presque, ou calcul de sélectivité impossible..


    Ca n'a pas d'importance, mais je ne peux accéder à la traduction.
    “La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.” Antoine de Saint-Exupéry.

    D1..D7-2005,2006-Xe2 Ent-XE7 archi-MsSql 2005..2008 & R2, FB 1.5..2.5.x.x -Win10,Win7/64-Xp-
    _____________________________________________________

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par castorcharly Voir le message
    Ca n'a pas d'importance, mais je ne peux accéder à la traduction.
    Maintenant que la FAQ est participative cela veut dire que j'ai un boulot de dingue si je veux publier toutes ces FAQ traduites
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Citation Envoyé par castorcharly Voir le message
    1=Table vide ou presque, ou calcul de sélectivité impossible..
    Heu non une table vide donne une sélectivité à 0
    et une table presque vide donnera une sélectivité entre ]0 et 0.5] ou égale à 1 mais dans tous les cas ne sera pas très petit (proche de zéro)

    Quand on a 1 c'est que toutes les valeurs du champ indexé sont identiques.

    0 c'est quand la table est vide la sélectivité n'est pas calculable.

  7. #7
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Effectivement je n'avais pas vu le premier lien de SergioMaster, j'ai juste essayé la traduction qui m'est également inaccessible.

    Je pense par contre qu'il y a des erreurs dans la FAQ d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*)/nullif(count(distinct(index_field)), 0) from table;
    n'est pas correcte.
    Ca serait plutôt du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select 1/nullif(count(distinct(index_field)), 0) from table;

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

Discussions similaires

  1. Question sur les index
    Par Veve44 dans le forum Oracle
    Réponses: 3
    Dernier message: 09/11/2005, 14h01
  2. Réflexion sur les INDEX ... !!! ??? !!!
    Par snoopy69 dans le forum Oracle
    Réponses: 4
    Dernier message: 22/09/2005, 15h58
  3. Question sur les index
    Par barok dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 31/05/2005, 08h06
  4. [DB2] Question sur les index et les vues
    Par ahoyeau dans le forum DB2
    Réponses: 1
    Dernier message: 14/03/2005, 08h30
  5. Questions sur les indexations
    Par freud dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/05/2004, 11h38

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