explain.depesz.com

PostgreSQL's explain analyze made readable

Result: hMgg

Settings
# exclusive inclusive rows x rows loops node
1. 0.006 0.207 ↑ 2.0 1 1

Nested Loop Left Join (cost=9.77..55.85 rows=2 width=80) (actual time=0.191..0.207 rows=1 loops=1)

  • Output: bvn.bvn_id_bovin, '20181001'::text, 1079014, age.age_id_age, age_entree.age_id_age, mou_entree.mou_id_cause_mvt, mou_sortie.mou_id_cause_mvt, rac.rac_id_race, sex.sex_id_sexe, CASE WHEN (geo.geo_id_geographique IS NULL) THEN '-1'::integer ELSE geo.geo_id_geographique END, 0, 0, 1
2. 0.001 0.156 ↑ 1.0 1 1

Nested Loop Left Join (cost=1.14..30.81 rows=1 width=28) (actual time=0.143..0.156 rows=1 loops=1)

  • Output: bvn.bvn_id_bovin, age_entree.age_id_age, age.age_id_age, mou_entree.mou_id_cause_mvt, mou_sortie.mou_id_cause_mvt, rac.rac_id_race, sex.sex_id_sexe
3. 0.001 0.150 ↑ 1.0 1 1

Nested Loop Left Join (cost=1.14..29.74 rows=1 width=24) (actual time=0.136..0.150 rows=1 loops=1)

  • Output: bvn.bvn_id_bovin, age_entree.age_id_age, age.age_id_age, mou_entree.mou_id_cause_mvt, mou_sortie.mou_id_cause_mvt, rac.rac_id_race
4. 0.002 0.130 ↑ 1.0 1 1

Nested Loop Left Join (cost=1.14..27.92 rows=1 width=20) (actual time=0.123..0.130 rows=1 loops=1)

  • Output: bvn.bvn_id_bovin, age_entree.age_id_age, age.age_id_age, mou_entree.mou_id_cause_mvt, mou_sortie.mou_id_cause_mvt
5. 0.002 0.100 ↑ 1.0 1 1

Nested Loop Left Join (cost=1.14..26.56 rows=1 width=16) (actual time=0.093..0.100 rows=1 loops=1)

  • Output: bvn.bvn_id_bovin, age_entree.age_id_age, age.age_id_age, mou_entree.mou_id_cause_mvt
6. 0.002 0.082 ↑ 1.0 1 1

Nested Loop Left Join (cost=1.14..25.21 rows=1 width=12) (actual time=0.080..0.082 rows=1 loops=1)

  • Output: bvn.bvn_id_bovin, age_entree.age_id_age, age.age_id_age
7. 0.006 0.073 ↑ 1.0 1 1

Nested Loop Left Join (cost=0.85..16.90 rows=1 width=8) (actual time=0.071..0.073 rows=1 loops=1)

  • Output: bvn.bvn_id_bovin, age_entree.age_id_age
8. 0.057 0.057 ↑ 1.0 1 1

Index Scan using i_t_dim_bovin_bvn on entrepot.t_dim_bovin_bvn bvn (cost=0.57..8.59 rows=1 width=4) (actual time=0.057..0.057 rows=1 loops=1)

  • Output: bvn.bvn_id_bovin, bvn.bvn_num_bovin
  • Index Cond: ((bvn.bvn_num_bovin)::text = 'FR0185008478'::text)
9. 0.010 0.010 ↑ 1.0 1 1

Index Scan using i_t_dim_age_age on entrepot.t_dim_age_age age_entree (cost=0.28..8.30 rows=1 width=4) (actual time=0.009..0.010 rows=1 loops=1)

  • Output: age_entree.age_id_age, age_entree.age_annees, age_entree.age_mois, age_entree.age_jours
  • Index Cond: ((age_entree.age_jours)::integer = 2523)
10. 0.007 0.007 ↓ 0.0 0 1

Index Scan using i_t_dim_age_age on entrepot.t_dim_age_age age (cost=0.28..8.30 rows=1 width=4) (actual time=0.007..0.007 rows=0 loops=1)

  • Output: age.age_id_age, age.age_annees, age.age_mois, age.age_jours
  • Index Cond: ((age.age_jours)::integer = '-1'::integer)
11. 0.016 0.016 ↑ 1.0 1 1

Seq Scan on entrepot.t_dim_bov_mouvement_mou mou_entree (cost=0.00..1.34 rows=1 width=4) (actual time=0.012..0.016 rows=1 loops=1)

  • Output: mou_entree.mou_id_cause_mvt, mou_entree.mou_type_mouvement, mou_entree.mou_cause_mouvement, mou_entree.mou_libelle_cause_mouvement
  • Filter: (((mou_entree.mou_type_mouvement)::text = 'E'::text) AND ((mou_entree.mou_cause_mouvement)::text = 'A'::text))
  • Rows Removed by Filter: 22
12. 0.028 0.028 ↓ 0.0 0 1

Seq Scan on entrepot.t_dim_bov_mouvement_mou mou_sortie (cost=0.00..1.34 rows=1 width=4) (actual time=0.028..0.028 rows=0 loops=1)

  • Output: mou_sortie.mou_id_cause_mvt, mou_sortie.mou_type_mouvement, mou_sortie.mou_cause_mouvement, mou_sortie.mou_libelle_cause_mouvement
  • Filter: (((mou_sortie.mou_type_mouvement)::text = 'S'::text) AND ((mou_sortie.mou_cause_mouvement)::text = ''::text))
  • Rows Removed by Filter: 23
13. 0.019 0.019 ↑ 1.0 1 1

Seq Scan on entrepot.t_dim_race_rac rac (cost=0.00..1.81 rows=1 width=4) (actual time=0.013..0.019 rows=1 loops=1)

  • Output: rac.rac_id_race, rac.rac_code_race, rac.rac_libelle_race, rac.rac_type_de_production, rac.rac_date_debut, rac.rac_date_fin, rac.rac_valide
  • Filter: ((rac.rac_code_race)::text = '46'::text)
  • Rows Removed by Filter: 64
14. 0.005 0.005 ↓ 0.0 0 1

Seq Scan on entrepot.t_dim_sexe_sex sex (cost=0.00..1.06 rows=1 width=4) (actual time=0.005..0.005 rows=0 loops=1)

  • Output: sex.sex_id_sexe, sex.sex_code_sexe, sex.sex_libelle_court_sexe, sex.sex_sexe, sex.sex_detail, sex.sex_detail_code
  • Filter: ((sex.sex_detail)::text = '2'::text)
  • Rows Removed by Filter: 5
15. 0.003 0.045 ↑ 2.0 1 1

Nested Loop (cost=8.64..25.01 rows=2 width=4) (actual time=0.043..0.045 rows=1 loops=1)

  • Output: geo.geo_id_geographique
16. 0.001 0.026 ↑ 2.0 1 1

Unique (cost=8.35..8.36 rows=2 width=32) (actual time=0.025..0.026 rows=1 loops=1)

  • Output: tr_correspondance_anciennes_communes_cac.cac_nouveau_code
17. 0.010 0.025 ↑ 2.0 1 1

Sort (cost=8.35..8.35 rows=2 width=32) (actual time=0.024..0.025 rows=1 loops=1)

  • Output: tr_correspondance_anciennes_communes_cac.cac_nouveau_code
  • Sort Key: tr_correspondance_anciennes_communes_cac.cac_nouveau_code
  • Sort Method: quicksort Memory: 25kB
18. 0.002 0.015 ↑ 2.0 1 1

Append (cost=0.28..8.34 rows=2 width=32) (actual time=0.014..0.015 rows=1 loops=1)

19. 0.012 0.012 ↓ 0.0 0 1

Index Scan using i_tr_correspondance_anciennes_communes_cac on entrepot.tr_correspondance_anciennes_communes_cac (cost=0.28..8.30 rows=1 width=6) (actual time=0.011..0.012 rows=0 loops=1)

  • Output: tr_correspondance_anciennes_communes_cac.cac_nouveau_code
  • Index Cond: ((tr_correspondance_anciennes_communes_cac.cac_ancien_code)::text = '01079'::text)
20. 0.001 0.001 ↑ 1.0 1 1

Result (cost=0.00..0.01 rows=1 width=32) (actual time=0.001..0.001 rows=1 loops=1)

  • Output: '01079'::character varying
21. 0.016 0.016 ↑ 1.0 1 1

Index Scan using i_t_dim_geographique_geo on entrepot.t_dim_geographique_geo geo (cost=0.29..8.31 rows=1 width=10) (actual time=0.015..0.016 rows=1 loops=1)

  • Output: geo.geo_id_geographique, geo.geo_union_europeenne, geo.geo_pays, geo.geo_code_region, geo.geo_libelle_region, geo.geo_code_ancienne_region, geo.geo_libelle_ancienne_region, geo.geo_code_departement, geo.geo_libelle_departement, geo.geo_code_canton, geo.geo_libelle_canton, geo.geo_code_epci, geo.geo_libelle_epci, geo.geo_code_commune, geo.geo_libelle_commune, geo.geo_date_debut, geo.geo_date_fin, geo.geo_valide, geo.geo_version
  • Index Cond: ((geo.geo_code_commune)::text = (tr_correspondance_anciennes_communes_cac.cac_nouveau_code)::text)
Planning time : 0.821 ms
Execution time : 0.356 ms