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 :

Généralité PLAN et index


Sujet :

SQL 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 Généralité PLAN et index
    Bonjour,

    Je suis conscient de mon faible niveau sur le bon usage des index et du coup du résultat des PLANs,
    y a t il des pages concernant l'analyse des PLANs, de manière à comprendre le retour que j'obtiens
    dans IbExpert par exemple.
    “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 029
    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 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    dans IBExpert je ne rappelle plus , avec flamerobin chaque requête (ou presque) fourni un panneau statistiques montrant le log des actions sur la base
    démarrage de transaction
    SQL
    temps de préparation
    Champs récupérés (nom alias type , taille
    Plan utilisé
    nombre de lectures etc...
    temps d'exécution
    à ma souvenance ibexpert a ce genre de choses mais je ne l'ai plus sur mes postes.
    .....
    Je me suis rafraichi la mémoire sur des images écran, il y a un onglet 'plan analyser' dans le SQL editor
    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 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
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    dans IBExpert je ne rappelle plus , avec flamerobin chaque requête (ou presque) fourni un panneau statistiques montrant le log des actions sur la base

    à ma souvenance ibexpert a ce genre de choses mais je ne l'ai plus sur mes postes.
    .....
    Je me suis rafraichi la mémoire sur des images écran, il y a un onglet 'plan analyser' dans le SQL editor
    Oui il y a bien dans IbExpert ce genre de retour après une SQL, mais ce que je cherche c'est un moyen de l'interpréter de manière efficace.
    Par exemple, je vois des exécutions sous PLAN NATURAL ou PLAN autre.
    Je ne sais dire à quoi ça correspond.
    Je cherche à me former là dessus, soit via des sites web, (tuto etc.), soit des livres sur le sujet.

    J'ai jamais trop cherché , car sous ssms de Sql serveur, dans les dernières version, il y a un analyseur, qui indique si les index sont optimums et quels index il faudrait créer pour améliorer les temps d'exécution et c'est très efficace.
    C'est pas le même prix, mais je suis sur qu'il y a des règles que je pourrais appliquer pour améliorer mes requêtes en construisant de meilleurs index, enfin des index correspondant aux requêtes qui me sont utiles.

    edit:
    Tes remarques ont tout de même été utiles, car du coup j'ai regardé en détail l'analyseur de plan, qui me dit les tables qui ne sont pas correctements indexées par rapport à la requête lancée.
    C'est déjà ça de trouvé que je n'avais compris au premier abord.
    “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-
    _____________________________________________________

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    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 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par castorcharly Voir le message
    Je cherche à me former là dessus, soit via des sites web, (tuto etc.), soit des livres sur le sujet.
    je n'avais pas vraiment compris le sens de ta question , as-tu été fouiller dans les cours de SQLPro ? http://sqlpro.developpez.com/cours/optimiser/ << il y parle à peine du plan mais il y en a certainement d'autres
    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

  5. #5
    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
    Citation Envoyé par SergioMaster Voir le message
    je n'avais pas vraiment compris le sens de ta question , as-tu été fouiller dans les cours de SQLPro ? http://sqlpro.developpez.com/cours/optimiser/ << il y parle à peine du plan mais il y en a certainement d'autres
    Oui, pas très claire comme façon de rédiger ma question... c'est moi qui suis confus

    Je n'ai pas été sur ce cours là, mais je vais aller y jeter un coup d'oeil.
    Pour la recherche, pas facile avec PLAN et/ou index c'est le fleuve...
    C'est pour ça que je viens ici au cas où qq. aurait trouvé ce type d'info.
    “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-
    _____________________________________________________

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    Voici un article quelque peu ancien, mais il m'avait été utile en son temps. Il s'agit d'un tutoriel pour Interbase, mais il existe des similitudes avec Firebird.

    l'adresse : http://hcesbronlavau.developpez.com/PlansIB/

    Tu peux toujours le parcourir.

    Bon courage

  7. #7
    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
    Citation Envoyé par seabs Voir le message
    Bonjour,

    Voici un article quelque peu ancien, mais il m'avait été utile en son temps. Il s'agit d'un tutoriel pour Interbase, mais il existe des similitudes avec Firebird.

    l'adresse : http://hcesbronlavau.developpez.com/PlansIB/

    Tu peux toujours le parcourir.

    Bon courage
    Merci, il y a des choses interressante dans ce pdf, qui je vois a été révisé en 2013.
    “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-
    _____________________________________________________

  8. #8
    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
    Bonjour,

    Je reviens sur ce post car je suis confronté a un truc qui me parait bizare.
    J'utilise IbExpert pro et si je fais un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ensid, sitid, tpvid from TPV
    sur une table qui a cette structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    CREATE TABLE TPV (
        TPVID   INTEGER NOT NULL,
        TPVNOM  VARCHAR(32) NOT NULL,
        ENSID   INTEGER NOT NULL,
        SITID   INTEGER NOT NULL
    );
    ALTER TABLE CAISSES ADD PRIMARY KEY (ENSID, SITID, TPVID);
    IbExpert me dit dans l'analyser que sur 755 lignes, j'en ai 755 qui ne sont pas indexées !!!

    Bien sur cette requete ne sert à rien, mais bon je voudrais comprendre si c'est moi qui n'ai pas compris ou autre...
    “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-
    _____________________________________________________

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    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 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    C'est moi ou une erreur de transcription ? tu parles de la table TPV mais l'index créé est sur la table CAISSES .S'il n'y a pas d'erreur alors TPV n'a pas d'index et IBexpert ne se trompe pas dans son affirmation
    Edit : je comprends que les Terminaux Points de Vente (TPV) soient des CAISSES mais pas Firebird

    Perso, j'aurais ajouté un champ unique numérique auto incrémenté à la table TPV comme clé primaire et un index sur les trois champs mais bon , je ne jette pas la pierre ce n'est que tout récemment que je préfère ce genre de structure
    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

  10. #10
    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
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    C'est moi ou une erreur de transcription ? tu parles de la table TPV mais l'index créé est sur la table CAISSES .S'il n'y a pas d'erreur alors TPV n'a pas d'index et IBexpert ne se trompe pas dans son affirmation
    Mea culpa

    Il faut lire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE TPV ADD PRIMARY KEY(ENSID, SITID, TPVID);
    J'ai fait une copie de ma table caisses pour essai qui se nomme TPV et je t'ai mélangé les DDL, ça serait trop facile sinon
    “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-
    _____________________________________________________

  11. #11
    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
    Je pense que c'est un problème d'ibexpert qui me raconte des salades sur ce type de requêtes.

    Car si je fais une UNION toute bête avec la table Sites qui est liée avec la table TPV via le champ ensid et sitid, là j'ai une analyse cohérente,
    avec zéro ligne non indexée.
    “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-
    _____________________________________________________

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    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 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Peut être aussi que si tu avais mis un ORDER BY après le Select tu aurais eu un bon résultat
    SELECT * FROM TABLE , l'interpréteur n'utilisera aucun index
    SELECT * FROM TABLE ORDER BY INDEX , dans ce cas il utilisera l'index

    Après IBexpert ne s'exprime peut être tout simplement pas en bon français quand il dit
    sur 755 lignes, j'en ai 755 qui ne sont pas indexées
    il faut peut être comprendre
    755 lignes aucun index utilisé
    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

  13. #13
    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
    Citation Envoyé par SergioMaster Voir le message
    Peut être aussi que si tu avais mis un ORDER BY après le Select tu aurais eu un bon résultat
    SELECT * FROM TABLE , l'interpréteur n'utilisera aucun index
    SELECT * FROM TABLE ORDER BY INDEX , dans ce cas il utilisera l'index

    Après IBexpert ne s'exprime peut être tout simplement pas en bon français quand il dit

    il faut peut être comprendre...
    Merci SergioMaster,
    tu as raison sur tout:

    Je venais de lancer ma requête avec l'order by, suite à la lecture approfondie du doc dans ce post sur les plans http://hcesbronlavau.developpez.com/PlansIB/
    et effectivement l'order by oblige le moteur à utiliser les index du coup ibexpert ne me ressort plus d'anomalie.
    Maintenant il me reste à analyser le reste, vu que je ne suis plus perturbé par ce cas de figure.
    “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-
    _____________________________________________________

Discussions similaires

  1. Query plan - indexes
    Par West01 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/12/2009, 13h51
  2. Parametre d'instance pour explain plan avec Bitmap index
    Par Arvulis dans le forum Administration
    Réponses: 1
    Dernier message: 06/02/2009, 14h14
  3. [OS/390] Question généralités sur les index ?
    Par mainframe dans le forum DB2
    Réponses: 2
    Dernier message: 07/09/2006, 13h33
  4. Indexation dans le plan
    Par Blustuff dans le forum Algorithmes et structures de données
    Réponses: 37
    Dernier message: 06/07/2006, 21h25

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