explain.depesz.com

PostgreSQL's explain analyze made readable

Result: FPEo

Settings
# exclusive inclusive rows x rows loops node
1. 444.946 35,413.324 ↓ 556,472.0 556,472 1

Nested Loop Left Join (cost=166,957.33..898,313.62 rows=1 width=420) (actual time=107.679..35,413.324 rows=556,472 loops=1)

2. 267.039 34,968.378 ↓ 556,472.0 556,472 1

Nested Loop Left Join (cost=166,956.90..898,299.17 rows=1 width=404) (actual time=107.676..34,968.378 rows=556,472 loops=1)

3. 376.644 32,475.451 ↓ 556,472.0 556,472 1

Nested Loop Left Join (cost=166,956.47..898,291.71 rows=1 width=404) (actual time=107.663..32,475.451 rows=556,472 loops=1)

4. 270.434 29,872.919 ↓ 556,472.0 556,472 1

Nested Loop Left Join (cost=166,956.03..898,284.24 rows=1 width=396) (actual time=107.649..29,872.919 rows=556,472 loops=1)

5. 168.145 27,376.597 ↓ 556,472.0 556,472 1

Nested Loop Left Join (cost=166,955.60..898,276.76 rows=1 width=396) (actual time=107.634..27,376.597 rows=556,472 loops=1)

6. 371.775 26,095.508 ↓ 556,472.0 556,472 1

Nested Loop Left Join (cost=166,955.17..898,269.32 rows=1 width=392) (actual time=107.631..26,095.508 rows=556,472 loops=1)

7. 538.945 24,054.317 ↓ 556,472.0 556,472 1

Nested Loop Left Join (cost=166,954.89..898,262.12 rows=1 width=394) (actual time=107.620..24,054.317 rows=556,472 loops=1)

  • Join Filter: (p.id_sous_ligne = sl.id_sous_ligne)
8. 384.569 14,611.820 ↓ 556,472.0 556,472 1

Nested Loop Left Join (cost=166,954.89..898,260.18 rows=1 width=409) (actual time=107.596..14,611.820 rows=556,472 loops=1)

9. 326.801 13,114.307 ↓ 556,472.0 556,472 1

Nested Loop Left Join (cost=166,954.46..898,252.69 rows=1 width=391) (actual time=107.593..13,114.307 rows=556,472 loops=1)

10. 714.472 11,674.562 ↓ 556,472.0 556,472 1

Nested Loop Left Join (cost=166,954.03..898,245.23 rows=1 width=376) (actual time=107.588..11,674.562 rows=556,472 loops=1)

11. 0.000 9,290.674 ↓ 556,472.0 556,472 1

Gather (cost=166,953.60..898,237.77 rows=1 width=378) (actual time=107.576..9,290.674 rows=556,472 loops=1)

  • Workers Planned: 2
  • Workers Launched: 2
12. 0.000 18,242.182 ↓ 185,491.0 185,491 3 / 3

Nested Loop (cost=165,953.60..897,237.67 rows=1 width=378) (actual time=100.426..18,242.182 rows=185,491 loops=3)

13. 209.907 15,301.073 ↓ 49,121.3 736,819 3 / 3

Nested Loop (cost=165,953.18..897,125.67 rows=15 width=375) (actual time=99.229..15,301.073 rows=736,819 loops=3)

14. 873.619 12,143.891 ↓ 1,244.6 736,819 3 / 3

Nested Loop Left Join (cost=165,952.75..892,704.96 rows=592 width=336) (actual time=99.203..12,143.891 rows=736,819 loops=3)

15. 434.858 9,059.816 ↓ 1,244.6 736,819 3 / 3

Parallel Hash Left Join (cost=165,952.33..888,291.74 rows=592 width=336) (actual time=99.175..9,059.816 rows=736,819 loops=3)

  • Hash Cond: (vc.id_service_voiture = sv.id_service_voiture)
16. 758.174 8,622.394 ↓ 1,244.6 736,819 3 / 3

Nested Loop Left Join (cost=163,144.15..885,482.01 rows=592 width=339) (actual time=96.430..8,622.394 rows=736,819 loops=3)

17. 807.517 5,653.764 ↓ 1,244.6 736,819 3 / 3

Nested Loop Left Join (cost=163,143.73..881,073.17 rows=592 width=339) (actual time=96.401..5,653.764 rows=736,819 loops=3)

18. 453.001 2,641.948 ↓ 1,241.2 734,766 3 / 3

Hash Left Join (cost=163,143.16..876,516.32 rows=592 width=122) (actual time=96.366..2,641.948 rows=734,766 loops=3)

  • Hash Cond: ((t_theo.date_travail = c.date_calendrier) AND (t_theo.id_ce_travail = c.id_ce_calendrier))
19. 373.648 2,188.853 ↓ 1,241.2 734,766 3 / 3

Nested Loop (cost=163,062.29..876,432.34 rows=592 width=82) (actual time=96.225..2,188.853 rows=734,766 loops=3)

20. 53.510 205.205 ↓ 31.6 57,500 3 / 3

Parallel Hash Join (cost=163,061.72..390,006.58 rows=1,822 width=58) (actual time=96.126..205.205 rows=57,500 loops=3)

  • Hash Cond: (t_theo.id_real_parcours = rp_theo.id_real_parcours)
21. 66.304 70.510 ↑ 1.0 64,232 3 / 3

Parallel Bitmap Heap Scan on travail t_theo (cost=4,322.90..231,098.31 rows=64,548 width=37) (actual time=14.524..70.510 rows=64,232 loops=3)

  • Recheck Cond: ((date_travail >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_travail <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)))
  • Filter: ((id_travail IS NOT NULL) AND ((id_ce_travail = '-1'::numeric) OR (id_ce_travail = '2'::numeric) OR (id_ce_travail = '0'::numeric) OR (id_ce_travail = '1'::numeric)))
  • Heap Blocks: exact=1,192
22. 4.206 4.206 ↑ 1.0 192,696 1 / 3

Bitmap Index Scan on travail_date_ce_index (cost=0.00..4,284.17 rows=193,173 width=0) (actual time=12.617..12.617 rows=192,696 loops=1)

  • Index Cond: ((date_travail >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_travail <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)))
23. 20.677 81.185 ↓ 1.0 57,158 3 / 3

Parallel Hash (cost=158,052.99..158,052.99 rows=54,867 width=29) (actual time=81.185..81.185 rows=57,158 loops=3)

  • Buckets: 262,144 Batches: 1 Memory Usage: 13,792kB
24. 56.754 60.508 ↓ 1.0 57,158 3 / 3

Parallel Bitmap Heap Scan on real_parcours rp_theo (cost=3,783.11..158,052.99 rows=54,867 width=29) (actual time=13.566..60.508 rows=57,158 loops=3)

  • Recheck Cond: ((date_real_parcours >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_real_parcours <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)))
  • Filter: ((id_real_parcours IS NOT NULL) AND ((id_ce_real_parcours = '-1'::numeric) OR (id_ce_real_parcours = '2'::numeric) OR (id_ce_real_parcours = '0'::numeric) OR (id_ce_real_parcours = '1'::numeric)))
  • Heap Blocks: exact=6,347
25. 3.754 3.754 ↓ 1.0 171,474 1 / 3

Bitmap Index Scan on real_parcours_date_ce_index (cost=0.00..3,750.19 rows=167,775 width=0) (actual time=11.263..11.263 rows=171,474 loops=1)

  • Index Cond: ((date_real_parcours >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_real_parcours <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)))
26. 1,610.000 1,610.000 ↓ 4.3 13 172,500 / 3

Index Scan using desserte_trav_dep_rang_index on desserte d_theo (cost=0.57..266.94 rows=3 width=40) (actual time=0.009..0.028 rows=13 loops=172,500)

  • Index Cond: (id_travail_depart = t_theo.id_travail)
  • Filter: ((id_origine_realisation = '1'::numeric) AND (date_desserte >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_desserte <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_desserte = '-1'::numeric) OR (id_ce_desserte = '2'::numeric) OR (id_ce_desserte = '0'::numeric) OR (id_ce_desserte = '1'::numeric)))
  • Rows Removed by Filter: 5
27. 0.016 0.094 ↓ 1.4 56 3 / 3

Hash (cost=80.28..80.28 rows=39 width=47) (actual time=0.094..0.094 rows=56 loops=3)

  • Buckets: 1,024 Batches: 1 Memory Usage: 13kB
28. 0.058 0.078 ↓ 1.4 56 3 / 3

Bitmap Heap Scan on calendrier c (cost=4.86..80.28 rows=39 width=47) (actual time=0.030..0.078 rows=56 loops=3)

  • Recheck Cond: ((date_calendrier >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_calendrier <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)))
  • Filter: ((id_ce_calendrier = '-1'::numeric) OR (id_ce_calendrier = '2'::numeric) OR (id_ce_calendrier = '0'::numeric) OR (id_ce_calendrier = '1'::numeric))
  • Heap Blocks: exact=11
29. 0.020 0.020 ↑ 1.0 56 3 / 3

Bitmap Index Scan on pk_calendrier (cost=0.00..4.86 rows=57 width=0) (actual time=0.020..0.020 rows=56 loops=3)

  • Index Cond: ((date_calendrier >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_calendrier <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)))
30. 2,204.299 2,204.299 ↓ 0.0 0 2,204,299 / 3

Index Scan using dessrt_id_desserte_theo_index on desserte d_real (cost=0.57..7.69 rows=1 width=225) (actual time=0.003..0.003 rows=0 loops=2,204,299)

  • Index Cond: (id_desserte_theo = d_theo.id_desserte)
  • Filter: ((date_desserte >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_desserte <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_desserte = '-1'::numeric) OR (id_ce_desserte = '2'::numeric) OR (id_ce_desserte = '0'::numeric) OR (id_ce_desserte = '1'::numeric)))
31. 2,210.456 2,210.456 ↑ 1.0 1 2,210,456 / 3

Index Scan using pk_voiture_continue on voiture_continue vc (cost=0.42..7.45 rows=1 width=14) (actual time=0.003..0.003 rows=1 loops=2,210,456)

  • Index Cond: ((t_theo.id_voiture_continue = id_voiture_continue) AND (id_voiture_continue IS NOT NULL))
  • Filter: ((date_voiture_continue >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_voiture_continue <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_voiture_continue = '-1'::numeric) OR (id_ce_voiture_continue = '2'::numeric) OR (id_ce_voiture_continue = '0'::numeric) OR (id_ce_voiture_continue = '1'::numeric)))
32. 0.862 2.564 ↑ 1.4 4,209 3 / 3

Parallel Hash (cost=2,735.22..2,735.22 rows=5,836 width=11) (actual time=2.564..2.564 rows=4,209 loops=3)

  • Buckets: 16,384 Batches: 1 Memory Usage: 768kB
33. 1.492 1.702 ↑ 1.4 4,209 3 / 3

Parallel Bitmap Heap Scan on service_voiture sv (cost=289.62..2,735.22 rows=5,836 width=11) (actual time=0.235..1.702 rows=4,209 loops=3)

  • Recheck Cond: ((date_service_voiture >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_service_voiture <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)))
  • Filter: ((id_service_voiture IS NOT NULL) AND ((id_ce_service_voiture = '-1'::numeric) OR (id_ce_service_voiture = '2'::numeric) OR (id_ce_service_voiture = '0'::numeric) OR (id_ce_service_voiture = '1'::numeric)))
  • Heap Blocks: exact=140
34. 0.210 0.210 ↑ 1.0 12,627 1 / 3

Bitmap Index Scan on service_voiture_date_ce_index (cost=0.00..287.14 rows=12,671 width=0) (actual time=0.629..0.629 rows=12,627 loops=1)

  • Index Cond: ((date_service_voiture >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_service_voiture <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)))
35. 2,210.456 2,210.456 ↑ 1.0 1 2,210,456 / 3

Index Scan using pk_vacation_agent on vacation_agent va (cost=0.42..7.45 rows=1 width=14) (actual time=0.003..0.003 rows=1 loops=2,210,456)

  • Index Cond: ((t_theo.id_vacation_agent = id_vacation_agent) AND (id_vacation_agent IS NOT NULL))
  • Filter: ((date_vacation_agent >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_vacation_agent <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_vacation_agent = '-1'::numeric) OR (id_ce_vacation_agent = '2'::numeric) OR (id_ce_vacation_agent = '0'::numeric) OR (id_ce_vacation_agent = '1'::numeric)))
36. 2,947.275 2,947.275 ↑ 1.0 1 2,210,456 / 3

Index Scan using pk_parcours on parcours p (cost=0.43..7.47 rows=1 width=51) (actual time=0.004..0.004 rows=1 loops=2,210,456)

  • Index Cond: ((id_parcours = rp_theo.id_parcours) AND (id_parcours IS NOT NULL))
  • Filter: ((date_parcours >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_parcours <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_parcours = '-1'::numeric) OR (id_ce_parcours = '2'::numeric) OR (id_ce_parcours = '0'::numeric) OR (id_ce_parcours = '1'::numeric)))
37. 2,947.275 2,947.275 ↓ 0.0 0 2,210,456 / 3

Index Scan using pk_ligne on ligne l (cost=0.42..7.46 rows=1 width=17) (actual time=0.004..0.004 rows=0 loops=2,210,456)

  • Index Cond: ((id_ligne = p.id_ligne) AND (id_ligne IS NOT NULL))
  • Filter: ((date_ligne >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_ligne <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_ligne = '-1'::numeric) OR (id_ce_ligne = '2'::numeric) OR (id_ce_ligne = '0'::numeric) OR (id_ce_ligne = '1'::numeric)) AND (((mnemo_ligne)::text = '1'::text) OR ((mnemo_ligne)::text = '2'::text) OR ((mnemo_ligne)::text = '3'::text) OR ((mnemo_ligne)::text = '5'::text) OR ((mnemo_ligne)::text = '6'::text) OR ((mnemo_ligne)::text = '7'::text)))
  • Rows Removed by Filter: 1
38. 1,669.416 1,669.416 ↑ 1.0 1 556,472

Index Scan using pk_service_agent on service_agent sa (cost=0.42..7.46 rows=1 width=12) (actual time=0.003..0.003 rows=1 loops=556,472)

  • Index Cond: ((va.id_service_agent = id_service_agent) AND (id_service_agent IS NOT NULL))
  • Filter: ((date_service_agent >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_service_agent <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_service_agent = '-1'::numeric) OR (id_ce_service_agent = '2'::numeric) OR (id_ce_service_agent = '0'::numeric) OR (id_ce_service_agent = '1'::numeric)))
39. 1,112.944 1,112.944 ↓ 0.0 0 556,472

Index Scan using pk_travail on travail t_real (cost=0.43..7.46 rows=1 width=23) (actual time=0.002..0.002 rows=0 loops=556,472)

  • Index Cond: (d_real.id_travail_depart = id_travail)
  • Filter: ((date_travail >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_travail <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_travail = '-1'::numeric) OR (id_ce_travail = '2'::numeric) OR (id_ce_travail = '0'::numeric) OR (id_ce_travail = '1'::numeric)))
40. 1,112.944 1,112.944 ↓ 0.0 0 556,472

Index Scan using pk_real_parcours on real_parcours rp_real (cost=0.43..7.49 rows=1 width=26) (actual time=0.002..0.002 rows=0 loops=556,472)

  • Index Cond: (id_real_parcours = t_real.id_real_parcours)
  • Filter: ((date_real_parcours >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_real_parcours <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_real_parcours = '-1'::numeric) OR (id_ce_real_parcours = '2'::numeric) OR (id_ce_real_parcours = '0'::numeric) OR (id_ce_real_parcours = '1'::numeric)))
41. 8,903.552 8,903.552 ↓ 0.0 0 556,472

Seq Scan on sous_ligne sl (cost=0.00..1.93 rows=1 width=12) (actual time=0.016..0.016 rows=0 loops=556,472)

  • Filter: ((date_sous_ligne >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_sous_ligne <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_sous_ligne = '-1'::numeric) OR (id_ce_sous_ligne = '2'::numeric) OR (id_ce_sous_ligne = '0'::numeric) OR (id_ce_sous_ligne = '1'::numeric)))
  • Rows Removed by Filter: 31
42. 1,669.416 1,669.416 ↑ 1.0 1 556,472

Index Scan using pk_sens on sens s (cost=0.28..7.05 rows=1 width=12) (actual time=0.003..0.003 rows=1 loops=556,472)

  • Index Cond: ((p.id_sens = id_sens) AND (id_sens IS NOT NULL))
  • Filter: ((date_sens >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_sens <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_sens = '-1'::numeric) OR (id_ce_sens = '2'::numeric) OR (id_ce_sens = '0'::numeric) OR (id_ce_sens = '1'::numeric)))
43. 1,112.944 1,112.944 ↓ 0.0 0 556,472

Index Scan using pk_vehicule on vehicule v (cost=0.42..7.44 rows=1 width=18) (actual time=0.002..0.002 rows=0 loops=556,472)

  • Index Cond: (t_real.id_vehicule = id_vehicule)
  • Filter: ((date_vehicule >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_vehicule <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_vehicule = '-1'::numeric) OR (id_ce_vehicule = '2'::numeric) OR (id_ce_vehicule = '0'::numeric) OR (id_ce_vehicule = '1'::numeric)))
44. 2,225.888 2,225.888 ↑ 1.0 1 556,472

Index Scan using pk_point_arret_parcours on point_arret_parcours pap (cost=0.44..7.48 rows=1 width=12) (actual time=0.004..0.004 rows=1 loops=556,472)

  • Index Cond: ((d_theo.id_point_arret_parcours = id_point_arret_parcours) AND (id_point_arret_parcours IS NOT NULL))
  • Filter: ((date_point_arret_parcours >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_point_arret_parcours <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_point_arret_parcours = '-1'::numeric) OR (id_ce_point_arret_parcours = '2'::numeric) OR (id_ce_point_arret_parcours = '0'::numeric) OR (id_ce_point_arret_parcours = '1'::numeric)))
45. 2,225.888 2,225.888 ↑ 1.0 1 556,472

Index Scan using pk_point_arret on point_arret pa (cost=0.43..7.47 rows=1 width=20) (actual time=0.004..0.004 rows=1 loops=556,472)

  • Index Cond: ((pap.id_point_arret = id_point_arret) AND (id_point_arret IS NOT NULL))
  • Filter: ((date_point_arret >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_point_arret <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_point_arret = '-1'::numeric) OR (id_ce_point_arret = '2'::numeric) OR (id_ce_point_arret = '0'::numeric) OR (id_ce_point_arret = '1'::numeric)))
46. 2,225.888 2,225.888 ↑ 1.0 1 556,472

Index Scan using pk_arret on arret a (cost=0.43..7.47 rows=1 width=12) (actual time=0.004..0.004 rows=1 loops=556,472)

  • Index Cond: ((pa.id_arret = id_arret) AND (id_arret IS NOT NULL))
  • Filter: ((date_arret >= to_date('09/09/2019'::text, 'dd/mm/yyyy'::text)) AND (date_arret <= to_date('22/09/2019'::text, 'dd/mm/yyyy'::text)) AND ((id_ce_arret = '-1'::numeric) OR (id_ce_arret = '2'::numeric) OR (id_ce_arret = '0'::numeric) OR (id_ce_arret = '1'::numeric)))
47. 0.000 0.000 ↓ 0.0 0 556,472

Index Scan using pk_point_arret on point_arret pavar (cost=0.43..7.44 rows=1 width=14) (actual time=0.000..0.000 rows=0 loops=556,472)

  • Index Cond: (d_real.id_point_arret_variante = id_point_arret)
Planning time : 13.767 ms
Execution time : 35,503.337 ms