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

Pourquoi ce plan d'éxécution


Sujet :

SQL Firebird

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut Pourquoi ce plan d'éxécution
    Bonjour

    Sous FIREBIRD 2.5 (avant dernière version)

    J'ai une question sur la construction du plan d’exécution par l'optimisateur qui me semble pas très optimal

    Voici les éléments (les requêtes ont été simplifiées pour une meilleur visualisation)

    Je joins 2 tables dont les index suivant ont été créés (Les index propres au clé primaire sont évidemment crées ) :
    * FK_N_DATA_TAXON lié à la colonne N_Data.Id_Taxon (sélectivité = 0.0008)
    * IDX_N_SESSION_ANNEE lié à la colonne N_Session.Date_Session au travers de [EXTRACT(YEAR FROM N_Session.Date_Session)] (Sélectivité = 0.006)
    * IDX_N_SESSION_MOIS lié à la colonne N_Session.Date_Session au travers de [EXTRACT(MONTH FROM N_Session.Date_Session)] (Sélectivité = 0.08)


    Voici les requêtes :
    1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT N_Data.Type_Action
                        FROM N_Data
                          INNER JOIN N_Session ON (N_Session.Id_Session = N_Data.Id_Session)
                          WHERE N_Data.Id_Taxon = :Id_Taxon
    Voici le plan proposé par l'optimisateur :
    PLAN JOIN (N_DATA INDEX (FK_N_DATA_TAXON), N_SESSION INDEX (PK_N_SESSION))
    avec un temps d’exécution de 0.5s

    2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT N_Data.Type_Action
                        FROM N_Data
                          INNER JOIN N_Session ON (N_Session.Id_Session = N_Data.Id_Session AND N_Session.Actif = 1)
                          WHERE N_Data.Id_Taxon = :Id_Taxon
                                AND EXTRACT(YEAR FROM N_Session.Date_Session) BETWEEN 1900 AND 2013
                                AND EXTRACT(MONTH FROM N_Session.Date_Session) IN (1,3,5,7,9,11)
    Voici le plan proposé par l'optimisateur :
    PLAN JOIN (N_SESSION INDEX (IDX_N_SESSION_ANNEE, IDX_N_SESSION_MOIS, IDX_N_SESSION_MOIS, IDX_N_SESSION_MOIS, IDX_N_SESSION_MOIS, IDX_N_SESSION_MOIS, IDX_N_SESSION_MOIS), N_DATA INDEX (FK_BAGUE_ID_SESSION, FK_N_DATA_TAXON))
    avec un temps d’exécution de 10s
    Cela ne parait pas incohérent puisque les index utilisés en premier sont moins pertinents
    IDX_N_SESSION_ANNEE (Sel = 0.006),
    IDX_N_SESSION_MOIS (Sel = 0.08
    et enfin FK_N_DATA_TAXON (Sel = 0.0008)
    Correct ?

    3 - Je force le plan d'execution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT N_Data.Type_Action
                        FROM N_Data
                          INNER JOIN N_Session ON (N_Session.Id_Session = N_Data.Id_Session AND N_Session.Actif = 1)
                          WHERE N_Data.Id_Taxon = :Id_Taxon
                                AND EXTRACT(YEAR FROM N_Session.Date_Session) BETWEEN 1900 AND 2013
                                AND EXTRACT(MONTH FROM N_Session.Date_Session) IN (1,3,5,7,9,11)
    PLAN SORT (JOIN (N_DATA INDEX (FK_N_DATA_TAXON), N_SESSION INDEX (PK_N_SESSION, IDX_N_SESSION_ANNEE, IDX_N_SESSION_MOIS)))
    Le plan final proposé est :
    PLAN JOIN (N_DATA INDEX (FK_N_DATA_TAXON), N_SESSION INDEX (PK_N_SESSION))
    le temps d’exécution de 0.5s

    Ma question est donc pourquoi l'optimisateur propose en 2 un plan qui est si désastreux en terme de temps d’exécution (facteur 20) ?

    Évidemment j'utilise la requête 3 en productivité, mais c'est par curiosité (et pour faire avancé le schmilblick )


    a+
    olivier
    Merci d'ajouter un sur les tags qui vous ont aidé

  2. #2
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    C'est typiquement quelque chose à poster dans le bug tracker
    mais clairement il cherche d'abord à résoudre la close where.

    C'est là où plus de stats sur les index sera un plus quand Firebird 3 sera là
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Ok je le propose au bug tracker

    vivement la version 3
    Merci d'ajouter un sur les tags qui vous ont aidé

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Philippe, j’essaye d'ajouter cette info dans le bug-tracker mais sans succès alors qu'il me semble avoir tout rempli correctement ???

    voici le message :
    Errors

    Error instantiating webwork.multipart.parser.class: com.atlassian.jira.web.JiraMultipartRequestWrapper(original message: null)

    You have not selected a valid project to create an issue in.
    Merci d'ajouter un sur les tags qui vous ont aidé

  5. #5
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    réessaie, il y avait un problème sur la machine qui héberge le tracker
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Citation Envoyé par makowski Voir le message
    réessaie, il y avait un problème sur la machine qui héberge le tracker
    Merci ca a marché

    je met résolu, mais si ...
    Merci d'ajouter un sur les tags qui vous ont aidé

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

Discussions similaires

  1. Analyse de plans d'éxécution
    Par floriann dans le forum Administration
    Réponses: 5
    Dernier message: 20/03/2013, 17h09
  2. Plan d'éxécution sur vue matérialisée
    Par startout dans le forum SQL
    Réponses: 4
    Dernier message: 16/12/2010, 09h45
  3. Incompréhension d'un plan d'éxécution
    Par sphax.wd dans le forum SQL
    Réponses: 3
    Dernier message: 29/10/2008, 17h43
  4. [TSQL]Imposé un plan d'éxécution ?
    Par arona dans le forum Sybase
    Réponses: 4
    Dernier message: 22/04/2007, 01h08

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