PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 22/12/2009 10:33:33

gilou974
Membre

Probleme sur execution d'une requête

Bonjour à tous.

Voilà j'ai un problème sur les bras mais je suis trop 'léger' comme éléphant et je ne sais pas vraiment ou chercher.

J'exécute une vue en faisant un SELECT * FROM v_mailing et ma réponse arrive en 1s.

Maintenant si je fais Un :
SELECT * FROM v_mailing WHERE st_etat_soc = 'SP' elle se termine en 149s pour 3861 lignes et si je fais la même chose mais avec :
SELECT * FROM v_mailing WHERE st_etat_soc = 'EX' elle se termine en 1s pour 2184 lignes.

J'ai un index sur le champ du filtre et j'ai effectué un VACUUM.

Pourriez-vous me donner des pistes s'il vous plaît en sachant que j'ai regardé la doc officielle pour les explain et analyse mais que j'avoue je n'ai pas vraiment compris.

Hors ligne

#2 22/12/2009 11:59:36

gleu
Administrateur

Re : Probleme sur execution d'une requête

Pour pouvoir vous aider, il faudrait nous donner le contenu de la vue et le résultat des trois requêtes suivantes :

SELECT * FROM v_mailing
SELECT * FROM v_mailing WHERE st_etat_soc = 'SP'
SELECT * FROM v_mailing WHERE st_etat_soc = 'EX'

Guillaume.

Hors ligne

#3 22/12/2009 13:30:14

gilou974
Membre

Re : Probleme sur execution d'une requête

Merci de votre réponse et désolé mais j'ai du aller en réunion voilà pourquoi je ne vous ai pas répondu tout de suite.

Je dois aller en déjeuner avec une responsable alors je vous fournit les éléments en début d'après midi .


Merci en tous les cas et Bon ap à tous en attendant.

PS la vue elle est la suivante :

CREATE OR REPLACE VIEW v_mailing AS
SELECT    
    soc.id_soc,
    soc.nm_soc_soc,
    soc.st_etat_soc,
    soc.st_url_soc,
    siege.fsc,
    siege.raisonsociale,
    siege."initialeCE",
    siege."initialeSE",
    sif.d_passsp_sif,
    sif.d_passpo_sif,
    sif.d_fingar_sif,
    sif.d_arch_sif,
    siege.st_enseigne_trs,       
    siege.st_adr_adr,
    siege.st_cp_adr,
    siege.st_ville_adr,
    siege.st_tel1_trs,
    siege.portable,
    siege.st_tel2_trs,
        siege.st_fax_trs,
        siege.st_email_trs,
    soa.franchiseur,
        soa.syndicat,
        soa.groupement,
        soa.exgarant,
        soa.assureur_rcp,
        soa.presta_info,
    soc.st_formesocialec_soc AS fscour,
    soc.st_enseignec_soc AS enscour,
    soc.st_raisonc_soc AS rscour,
    adr.st_adr_adr AS adrcour,
    adr.st_cp_adr AS cpcour,
    adr.st_ville_adr AS vilcour,
    trs.st_ape_trs,
    trs.st_sirene_trs,
    trs.st_clesir_trs,
    trs.fg_persmor_trs,
    soc.bl_transcla_soc,
    soc.bl_fdcom_soc,
    soc.bl_gerance_soc,
    soc.bl_syndic_soc,
        soc.bl_locsais_soc,
        sif.d_renouv_sif,
        soc.st_obs_soc AS obs_etac,
        soc.st_obsref_soc AS obs_ref,
        soc.d_moisclot_soc,
        soc.st_cdr_soc,
        gar.s,
        gar.t,
        gar.g,
        gar.m,
        gar.p
FROM
    societaire soc
JOIN
    v_soc_siege siege ON siege.id_soc = soc.id_soc
JOIN
    tiers trs ON soc.id_trs = trs.id_trs
JOIN
    adresse adr ON trs.id_adrcourrier = adr.id_adr
JOIN
    v_soc_societe_annexe soa ON soc.id_soc = soa.id_soc
JOIN
    societaire_info sif ON soc.id_sif = sif.id_sif
JOIN
    v_garantie_colone gar ON soc.nm_soc_soc = gar.nm_soc_soc
LEFT JOIN
    ( SELECT fiben.id_soc, st_coteact_fib, st_cotecred_fib
    FROM fiben JOIN
    (SELECT MAX(d_revu_fib) AS dfiben, id_soc
    FROM fiben GROUP BY id_soc)maxfiben
    ON fiben.id_soc = maxfiben.id_soc AND fiben.d_revu_fib = maxfiben.dfiben )fib
    ON soc.id_soc = fib.id_soc;

Vous me direz s'il faut le détail des intermédiaires mais je ne voudrez pas trop abuser de vtre tps c pkoi je demandais juste des pistes au départ.

Merci encore

Hors ligne

#4 22/12/2009 14:15:07

flo
Membre

Re : Probleme sur execution d'une requête

Ce serait sans doute mieux avec la description de toutes les vues.
Mais de toute manière, en règle générale, il faut éviter de joindre des vues, car si ces vues sont elles-mêmes le résultat de jointures, on a vite fait de joindre des tables inutiles. Sans compter qu'au final on ne comprend plus ce qu'on fait.
Donc si on t'impose d'utiliser les vues, soit prudent, et si tu veux qu'on t'aide, donne toutes les infos.
Sinon il vaudrait mieux réécrire la requête en n'utilisant que des tables.


Au passage, cela sert à quoi ?

LEFT JOIN
    ( SELECT fiben.id_soc, st_coteact_fib, st_cotecred_fib
    FROM fiben JOIN
    (SELECT MAX(d_revu_fib) AS dfiben, id_soc
    FROM fiben GROUP BY id_soc)maxfiben
    ON fiben.id_soc = maxfiben.id_soc AND fiben.d_revu_fib = maxfiben.dfiben )fib
    ON soc.id_soc = fib.id_soc;

Sauf erreur de ma part, tu ne t'en sert pas...

Enfin, quel est ton souci avec explain et explain analyze? tu l'as fait ou pas?

Hors ligne

#5 22/12/2009 15:12:53

gilou974
Membre

Re : Probleme sur execution d'une requête

flo a écrit :

Ce serait sans doute mieux avec la description de toutes les vues.
Mais de toute manière, en règle générale, il faut éviter de joindre des vues, car si ces vues sont elles-mêmes le résultat de jointures, on a vite fait de joindre des tables inutiles. Sans compter qu'au final on ne comprend plus ce qu'on fait.
Donc si on t'impose d'utiliser les vues, soit prudent, et si tu veux qu'on t'aide, donne toutes les infos.
Sinon il vaudrait mieux réécrire la requête en n'utilisant que des tables.


Au passage, cela sert à quoi ?

LEFT JOIN
    ( SELECT fiben.id_soc, st_coteact_fib, st_cotecred_fib
    FROM fiben JOIN
    (SELECT MAX(d_revu_fib) AS dfiben, id_soc
    FROM fiben GROUP BY id_soc)maxfiben
    ON fiben.id_soc = maxfiben.id_soc AND fiben.d_revu_fib = maxfiben.dfiben )fib
    ON soc.id_soc = fib.id_soc;

Sauf erreur de ma part, tu ne t'en sert pas...

Enfin, quel est ton souci avec explain et explain analyze? tu l'as fait ou pas?

Merci. Je vais en premier lieu regarder dans ce sens et essayer de n'utiliser que les tables.
Le bloc sur le fiben sert bien mais effectivement j'avais enlever le champ.
Pour ce qui est de l'analyse et du explain non je n'ai pas encore fait l'execution car je ne sais pas du tout comment exploiter la sortie.

Voilà je reviens vers vous plus tard et encore merci à tous.

Hors ligne

#6 22/12/2009 15:42:41

gleu
Administrateur

Re : Probleme sur execution d'une requête

Il ne faut pas l'exploiter, il faut juste nous coller le résultat ici pour qu'on ait plus d'informations sur ce qu'il se passe.


Guillaume.

Hors ligne

#7 22/12/2009 15:46:36

gilou974
Membre

Re : Probleme sur execution d'une requête

D'accord mais alors peu importe si je lance çà dans pgAdmin ou vous préferez en ligne de commande ou sans importance ?

Hors ligne

#8 22/12/2009 15:52:53

gleu
Administrateur

Re : Probleme sur execution d'une requête

Non à partir du moment où vous collez les lignes de texte que renvoie la commande.


Guillaume.

Hors ligne

#9 22/12/2009 16:06:40

gilou974
Membre

Re : Probleme sur execution d'une requête

Desole mais j'ai un gros doute je dois bien faire un EXPLAIN SELECT * FROM v_mailing et idem pour les versions avec filtre parce que rien que le select * me donne 158 lignes ? C'est un peu abuser de la bonne voloné des gens là non ?

Hors ligne

#10 22/12/2009 16:46:31

gilou974
Membre

Re : Probleme sur execution d'une requête

Alors mersi je viens encore d'apprendre quelque chose ne pas mettre un filtre dans une vue qui sert dans une autre vue appelée à être filtrée sur le même champ.

Par contre je n'explique quand même pas pourquoi avec une valeur çà fonctionnait très bien et avec les deux autres possibles c'était catastrophique.

Si quelqu'un pourrait répondre à mon post précédent :

gilou974 a écrit :

Desole mais j'ai un gros doute je dois bien faire un EXPLAIN SELECT * FROM v_mailing et idem pour les versions avec filtre parce que rien que le select * me donne 158 lignes ? C'est un peu abuser de la bonne voloné des gens là non ?

çà serait gentil juste pour savoir si c'était bien çà que vous attendiez de moi parce que désolé mais je met juste le résultat pour vous montrer parce que çà me paraît énorme :

EXPLAIN SELECT * FROM v_mailing WHERE st_etat_soc = 'SP'

Résultat :

"Nested Loop  (cost=24923.56..30629.12 rows=1 width=656)"
"  Join Filter: (soc.nm_soc_soc = public.societaire.nm_soc_soc)"
"  ->  Nested Loop Left Join  (cost=20603.10..26087.63 rows=1 width=616)"
"        Join Filter: (soc.id_soc = public.fiben.id_soc)"
"        ->  Nested Loop Left Join  (cost=20491.10..25896.34 rows=1 width=616)"
"              Join Filter: (public.societaire.id_soc = public.societaire.id_soc)"
"              ->  Nested Loop  (cost=19296.76..22758.56 rows=1 width=609)"
"                    ->  Nested Loop  (cost=19296.76..22758.06 rows=1 width=593)"
"                          ->  Nested Loop  (cost=19296.76..22755.47 rows=7 width=558)"
"                                ->  Nested Loop  (cost=19296.76..22745.11 rows=7 width=537)"
"                                      ->  Hash Join  (cost=19296.76..22444.40 rows=43 width=294)"
"                                            Hash Cond: (public.societaire.id_secretaire = public.utilisateur.id_usr)"
"                                            ->  Hash Join  (cost=19281.70..22428.51 rows=105 width=294)"
"                                                  Hash Cond: (public.societaire.id_soc = public.societaire.id_soc)"
"                                                  ->  Nested Loop  (cost=1415.01..4539.08 rows=4336 width=235)"
"                                                        ->  Hash Join  (cost=1415.01..2930.77 rows=4336 width=200)"
"                                                              Hash Cond: (tiers.id_tfs = forme_sociale.id_tfs)"
"                                                              ->  Hash Join  (cost=1413.51..2869.53 rows=4368 width=199)"
"                                                                    Hash Cond: (tiers.id_civ = public.civilite.id_civ)"
"                                                                    ->  Merge Join  (cost=1400.36..2791.01 rows=5786 width=125)"
"                                                                          Merge Cond: (tiers.id_trs = public.societaire.id_trs)"
"                                                                          ->  Index Scan using tiers_pkey on tiers  (cost=0.00..3916.12 rows=82650 width=117)"
"                                                                          ->  Sort  (cost=1400.35..1414.82 rows=5786 width=16)"
"                                                                                Sort Key: public.societaire.id_trs"
"                                                                                ->  Hash Join  (cost=14.85..1038.77 rows=5786 width=16)"
"                                                                                      Hash Cond: (public.societaire.id_charge = public.utilisateur.id_usr)"
"                                                                                      ->  Seq Scan on societaire  (cost=0.00..870.59 rows=25459 width=16)"
"                                                                                      ->  Hash  (cost=14.73..14.73 rows=10 width=8)"
"                                                                                            ->  Hash Join  (cost=13.15..14.73 rows=10 width=8)"
"                                                                                                  Hash Cond: (public.utilisateur.id_civ = public.civilite.id_civ)"
"                                                                                                  ->  Seq Scan on utilisateur  (cost=0.00..1.44 rows=10 width=12)"
"                                                                                                        Filter: bl_ce_usr"
"                                                                                                  ->  Hash  (cost=11.40..11.40 rows=140 width=4)"
"                                                                                                        ->  Seq Scan on civilite  (cost=0.00..11.40 rows=140 width=4)"
"                                                                    ->  Hash  (cost=11.40..11.40 rows=140 width=82)"
"                                                                          ->  Seq Scan on civilite  (cost=0.00..11.40 rows=140 width=82)"
"                                                              ->  Hash  (cost=1.22..1.22 rows=22 width=9)"
"                                                                    ->  Seq Scan on forme_sociale  (cost=0.00..1.22 rows=22 width=9)"
"                                                        ->  Index Scan using adresse_pkey on adresse  (cost=0.00..0.36 rows=1 width=43)"
"                                                              Index Cond: (adresse.id_adr = tiers.id_adrpro)"
"                                                  ->  Hash  (cost=17858.96..17858.96 rows=619 width=59)"
"                                                        ->  Hash Left Join  (cost=16798.16..17858.96 rows=619 width=59)"
"                                                              Hash Cond: (public.societaire.id_soc = public.societaire.id_soc)"
"                                                              ->  Hash Left Join  (cost=12309.40..13360.68 rows=380 width=48)"
"                                                                    Hash Cond: (public.societaire.id_soc = public.societaire.id_soc)"
"                                                                    ->  Hash Left Join  (cost=9256.95..10302.34 rows=380 width=37)"
"                                                                          Hash Cond: (public.societaire.id_soc = public.societaire.id_soc)"
"                                                                          ->  Hash Left Join  (cost=6232.93..7272.98 rows=380 width=26)"
"                                                                                Hash Cond: (public.societaire.id_soc = public.societaire.id_soc)"
"                                                                                ->  Hash Left Join  (cost=2981.36..4015.77 rows=380 width=15)"
"                                                                                      Hash Cond: (public.societaire.id_soc = public.societaire.id_soc)"
"                                                                                      ->  Seq Scan on societaire  (cost=0.00..1029.71 rows=380 width=4)"
"                                                                                            Filter: ((st_etat_soc)::text = ANY ('{DO,SP,EX}'::text[]))"
"                                                                                      ->  Hash  (cost=2906.14..2906.14 rows=6018 width=15)"
"                                                                                            ->  Hash Join  (cost=1194.20..2906.14 rows=6018 width=15)"
"                                                                                                  Hash Cond: (public.societaire_societeannexe.id_soc = public.societaire.id_soc)"
"                                                                                                  ->  Hash Join  (cost=5.38..1596.95 rows=6018 width=15)"
"                                                                                                        Hash Cond: (public.societaire_societeannexe.id_soa = public.societe_annexe.id_soa)"
"                                                                                                        ->  Seq Scan on societaire_societeannexe  (cost=0.00..1215.47 rows=84247 width=8)"
"                                                                                                        ->  Hash  (cost=5.15..5.15 rows=18 width=15)"
"                                                                                                              ->  Seq Scan on societe_annexe  (cost=0.00..5.15 rows=18 width=15)"
"                                                                                                                    Filter: (id_tsa = 2)"
"                                                                                                  ->  Hash  (cost=870.59..870.59 rows=25459 width=4)"
"                                                                                                        ->  Seq Scan on societaire  (cost=0.00..870.59 rows=25459 width=4)"
"                                                                                ->  Hash  (cost=3096.94..3096.94 rows=12370 width=15)"
"                                                                                      ->  Hash Join  (cost=1194.44..3096.94 rows=12370 width=15)"
"                                                                                            Hash Cond: (public.societaire_societeannexe.id_soc = public.societaire.id_soc)"
"                                                                                            ->  Hash Join  (cost=5.61..1660.71 rows=12370 width=15)"
"                                                                                                  Hash Cond: (public.societaire_societeannexe.id_soa = public.societe_annexe.id_soa)"
"                                                                                                  ->  Seq Scan on societaire_societeannexe  (cost=0.00..1215.47 rows=84247 width=8)"
"                                                                                                  ->  Hash  (cost=5.15..5.15 rows=37 width=15)"
"                                                                                                        ->  Seq Scan on societe_annexe  (cost=0.00..5.15 rows=37 width=15)"
"                                                                                                              Filter: (id_tsa = 1)"
"                                                                                            ->  Hash  (cost=870.59..870.59 rows=25459 width=4)"
"                                                                                                  ->  Seq Scan on societaire  (cost=0.00..870.59 rows=25459 width=4)"
"                                                                          ->  Hash  (cost=2936.27..2936.27 rows=7021 width=15)"
"                                                                                ->  Hash Join  (cost=1194.24..2936.27 rows=7021 width=15)"
"                                                                                      Hash Cond: (public.societaire_societeannexe.id_soc = public.societaire.id_soc)"
"                                                                                      ->  Hash Join  (cost=5.41..1607.02 rows=7021 width=15)"
"                                                                                            Hash Cond: (public.societaire_societeannexe.id_soa = public.societe_annexe.id_soa)"
"                                                                                            ->  Seq Scan on societaire_societeannexe  (cost=0.00..1215.47 rows=84247 width=8)"
"                                                                                            ->  Hash  (cost=5.15..5.15 rows=21 width=15)"
"                                                                                                  ->  Seq Scan on societe_annexe  (cost=0.00..5.15 rows=21 width=15)"
"                                                                                                        Filter: (id_tsa = 3)"
"                                                                                      ->  Hash  (cost=870.59..870.59 rows=25459 width=4)"
"                                                                                            ->  Seq Scan on societaire  (cost=0.00..870.59 rows=25459 width=4)"
"                                                                    ->  Hash  (cost=2956.33..2956.33 rows=7689 width=15)"
"                                                                          ->  Hash Join  (cost=1194.27..2956.33 rows=7689 width=15)"
"                                                                                Hash Cond: (public.societaire_societeannexe.id_soc = public.societaire.id_soc)"
"                                                                                ->  Hash Join  (cost=5.44..1613.72 rows=7689 width=15)"
"                                                                                      Hash Cond: (public.societaire_societeannexe.id_soa = public.societe_annexe.id_soa)"
"                                                                                      ->  Seq Scan on societaire_societeannexe  (cost=0.00..1215.47 rows=84247 width=8)"
"                                                                                      ->  Hash  (cost=5.15..5.15 rows=23 width=15)"
"                                                                                            ->  Seq Scan on societe_annexe  (cost=0.00..5.15 rows=23 width=15)"
"                                                                                                  Filter: (id_tsa = 5)"
"                                                                                ->  Hash  (cost=870.59..870.59 rows=25459 width=4)"
"                                                                                      ->  Seq Scan on societaire  (cost=0.00..870.59 rows=25459 width=4)"
"                                                              ->  Hash  (cost=3970.57..3970.57 rows=41455 width=15)"
"                                                                    ->  Hash Join  (cost=1195.53..3970.57 rows=41455 width=15)"
"                                                                          Hash Cond: (public.societaire_societeannexe.id_soc = public.societaire.id_soc)"
"                                                                          ->  Hash Join  (cost=6.70..1952.65 rows=41455 width=15)"
"                                                                                Hash Cond: (public.societaire_societeannexe.id_soa = public.societe_annexe.id_soa)"
"                                                                                ->  Seq Scan on societaire_societeannexe  (cost=0.00..1215.47 rows=84247 width=8)"
"                                                                                ->  Hash  (cost=5.15..5.15 rows=124 width=15)"
"                                                                                      ->  Seq Scan on societe_annexe  (cost=0.00..5.15 rows=124 width=15)"
"                                                                                            Filter: (id_tsa = 4)"
"                                                                          ->  Hash  (cost=870.59..870.59 rows=25459 width=4)"
"                                                                                ->  Seq Scan on societaire  (cost=0.00..870.59 rows=25459 width=4)"
"                                            ->  Hash  (cost=14.84..14.84 rows=18 width=8)"
"                                                  ->  Hash Join  (cost=13.15..14.84 rows=18 width=8)"
"                                                        Hash Cond: (public.utilisateur.id_civ = public.civilite.id_civ)"
"                                                        ->  Seq Scan on utilisateur  (cost=0.00..1.44 rows=18 width=12)"
"                                                              Filter: bl_se_usr"
"                                                        ->  Hash  (cost=11.40..11.40 rows=140 width=4)"
"                                                              ->  Seq Scan on civilite  (cost=0.00..11.40 rows=140 width=4)"
"                                      ->  Index Scan using societaire_pkey on societaire soc  (cost=0.00..6.98 rows=1 width=247)"
"                                            Index Cond: (soc.id_soc = public.societaire.id_soc)"
"                                            Filter: (soc.st_etat_soc = 'SP'::bpchar)"
"                                ->  Index Scan using tiers_pkey on tiers trs  (cost=0.00..1.47 rows=1 width=29)"
"                                      Index Cond: (trs.id_trs = soc.id_trs)"
"                          ->  Index Scan using adresse_pkey on adresse adr  (cost=0.00..0.36 rows=1 width=43)"
"                                Index Cond: (adr.id_adr = trs.id_adrcourrier)"
"                    ->  Index Scan using societaire_info_pkey on societaire_info sif  (cost=0.00..0.48 rows=1 width=24)"
"                          Index Cond: (sif.id_sif = soc.id_sif)"
"              ->  Hash Join  (cost=1194.34..3016.59 rows=9695 width=15)"
"                    Hash Cond: (public.societaire_societeannexe.id_soc = public.societaire.id_soc)"
"                    ->  Hash Join  (cost=5.51..1633.86 rows=9695 width=15)"
"                          Hash Cond: (public.societaire_societeannexe.id_soa = public.societe_annexe.id_soa)"
"                          ->  Seq Scan on societaire_societeannexe  (cost=0.00..1215.47 rows=84247 width=8)"
"                          ->  Hash  (cost=5.15..5.15 rows=29 width=15)"
"                                ->  Seq Scan on societe_annexe  (cost=0.00..5.15 rows=29 width=15)"
"                                      Filter: (id_tsa = 6)"
"                    ->  Hash  (cost=870.59..870.59 rows=25459 width=4)"
"                          ->  Seq Scan on societaire  (cost=0.00..870.59 rows=25459 width=4)"
"        ->  Hash Join  (cost=112.00..191.24 rows=4 width=4)"
"              Hash Cond: ((public.fiben.id_soc = public.fiben.id_soc) AND ((max(public.fiben.d_revu_fib)) = public.fiben.d_revu_fib))"
"              ->  HashAggregate  (cost=45.50..65.30 rows=1584 width=8)"
"                    ->  Seq Scan on fiben  (cost=0.00..35.00 rows=2100 width=8)"
"              ->  Hash  (cost=35.00..35.00 rows=2100 width=8)"
"                    ->  Seq Scan on fiben  (cost=0.00..35.00 rows=2100 width=8)"
"  ->  HashAggregate  (cost=4320.45..4454.99 rows=3844 width=12)"
"        ->  Hash Join  (cost=3297.55..4180.49 rows=9331 width=12)"
"              Hash Cond: (conseil.id_soc = public.societaire.id_soc)"
"              ->  Hash Join  (cost=2108.73..2805.04 rows=9331 width=12)"
"                    Hash Cond: (garantie_conseil.id_cns = conseil.id_cns)"
"                    ->  Hash Join  (cost=651.99..1161.68 rows=9331 width=12)"
"                          Hash Cond: (garantie_conseil.id_gar = garantie.id_gar)"
"                          ->  Seq Scan on garantie_conseil  (cost=0.00..230.06 rows=14906 width=8)"
"                          ->  Hash  (cost=448.74..448.74 rows=16260 width=12)"
"                                ->  Seq Scan on garantie  (cost=0.00..448.74 rows=16260 width=12)"
"                                      Filter: bl_encours_gar"
"                    ->  Hash  (cost=1129.66..1129.66 rows=26166 width=8)"
"                          ->  Seq Scan on conseil  (cost=0.00..1129.66 rows=26166 width=8)"
"              ->  Hash  (cost=870.59..870.59 rows=25459 width=8)"
"                    ->  Seq Scan on societaire  (cost=0.00..870.59 rows=25459 width=8)"

Hors ligne

#11 22/12/2009 16:47:31

gleu
Administrateur

Re : Probleme sur execution d'une requête

Il faut faire un EXPLAIN ANALYZE de la requête, pas un simple EXPLAIN.


Guillaume.

Hors ligne

#12 22/12/2009 16:52:35

gleu
Administrateur

Re : Probleme sur execution d'une requête

La première vue fait un join sur 8 relations, dont au moins 3 ont l'air d'être des vues. Vu le résultat du EXPLAIN, les trois autres vues ont l'air au moins identiques, voire pires.

Bref, là, le meilleur conseil qu'on puisse vous donner, c'est d'éviter des vues de vues de vues. Ce que vous a conseillé Florence d'ailleurs.


Guillaume.

Hors ligne

#13 22/12/2009 17:01:51

gilou974
Membre

Re : Probleme sur execution d'une requête

Merci à vous mais alors après c'est encore plus long à lire après ???
Je suis sûr que tous les gens du forum sont de bonne volonté mais je me dis que c'est de l'abus de ma part quand je vois le résultat à moins bien entendu ( et c'est ce que je pense que vous, avec l'habitude vous le voyez tout de suite ).

En tout cas on m'alertera à ce moment j'espère.

Alors je vais essayer de comprendre comment me servir du EXPLAIN ANALYSE.

Merci

Hors ligne

#14 22/12/2009 17:04:53

gleu
Administrateur

Re : Probleme sur execution d'une requête

EXPLAIN ne donne que des estimations alors que le EXPLAIN ANALYZE fournit les estimations ainsi que les valeurs réelles. Ça permet de voir si les estimations sont erronées et si les valeurs réelles sont vraiment importantes.


Guillaume.

Hors ligne

#15 22/12/2009 17:05:42

gilou974
Membre

Re : Probleme sur execution d'une requête

En résumé même si le nombre de table et d'alias (du à l'utilisation de mêmes tables plusieures fois) et donc de jointure il vaut mieux ne pas imbriquer de vues du tout ou seulement éviter les vues avec des filtres qui se croiseraient ????

Merci

Hors ligne

#16 22/12/2009 18:56:53

Marc Cousin
Membre

Re : Probleme sur execution d'une requête

Il faut avant tout éviter les vues utilisant des vues. Par ailleurs, une requête à plus d'une dizaine de tables risque d'être longue à planifier, quel que soit son temps d'exécution une fois le plan décidé.


Marc.

Hors ligne

#17 07/01/2010 11:41:17

gilou974
Membre

Re : Probleme sur execution d'une requête

Désolé pas revenu sur mon post depuis Merci encore à tous pour vos réponses et meilleurs voeux pour cette nouvelle année

Hors ligne

Pied de page des forums