explain.depesz.com

PostgreSQL's explain analyze made readable

Result: W4Wr

Settings
# exclusive inclusive rows x rows loops node
1. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=85,903.57..85,914.54 rows=113 width=81) (actual rows= loops=)

  • Group Key: anns.id_ann
2. 0.000 0.000 ↓ 0.0

Sort (cost=85,903.57..85,905.07 rows=600 width=9) (actual rows= loops=)

  • Sort Key: anns.id_ann
3. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.85..85,875.88 rows=600 width=9) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Seq Scan on anns (cost=0.00..12.40 rows=120 width=280) (actual rows= loops=)

  • Filter: pro
5. 0.000 0.000 ↓ 0.0

Append (cost=0.85..715.48 rows=5 width=5) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 1 (cost=0.85..57.55 rows=1 width=5) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.85..57.54 rows=1 width=9) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Index Scan using annonce_int4range_date_part_km_id_modele_id_energie_id_boit_idx on annonce a (cost=0.42..2.68 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (km = anns.km) AND (id_modele = anns.id_modele) AND (id_energie = anns.id_energie) AND (id_boite = anns.id_boite))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND ((url)::text <> (anns.url)::text) AND (id_site_source = anns.id_site_source) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]))
9. 0.000 0.000 ↓ 0.0

Index Scan using geographie_pkey on geographie g (cost=0.42..27.65 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (id_geographie = a.id_geographie)
  • Filter: ((id_pays = anns.id_pays) AND st_dwithin(location, anns.location, '10000'::double precision, false))
10. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 2 (cost=0.85..57.54 rows=1 width=5) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.85..57.53 rows=1 width=9) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Index Scan using annonce_int4range_date_part_km_id_modele_id_energie_id_boit_idx on annonce a_1 (cost=0.42..2.66 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (km = anns.km) AND (id_modele = anns.id_modele) AND (id_energie = anns.id_energie) AND (id_boite = anns.id_boite))
  • Filter: ((id_ann < anns.id_ann) AND (id_site_source <> anns.id_site_source) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]))
13. 0.000 0.000 ↓ 0.0

Index Scan using geographie_pkey on geographie g_1 (cost=0.42..27.65 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (id_geographie = a_1.id_geographie)
  • Filter: ((id_pays = anns.id_pays) AND st_dwithin(location, anns.location, '10000'::double precision, false))
14. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 3 (cost=146.72..200.16 rows=1 width=5) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Nested Loop (cost=146.72..200.15 rows=1 width=9) (actual rows= loops=)

  • Join Filter: (a_2.id_geographie = g_2.id_geographie)
16. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on geographie g_2 (cost=146.29..172.40 rows=1 width=4) (actual rows= loops=)

  • Recheck Cond: (id_pays = anns.id_pays)
  • Filter: st_dwithin(location, anns.location, '10000'::double precision, false)
17. 0.000 0.000 ↓ 0.0

BitmapAnd (cost=146.29..146.29 rows=1 width=0) (actual rows= loops=)

18. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on index_location (cost=0.00..2.15 rows=68 width=0) (actual rows= loops=)

  • Index Cond: (location && _st_expand(anns.location, '10000'::double precision))
19. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on geographie_id_pays_idx (cost=0.00..143.90 rows=13,556 width=0) (actual rows= loops=)

  • Index Cond: (id_pays = anns.id_pays)
20. 0.000 0.000 ↓ 0.0

Append (cost=0.43..27.63 rows=10 width=8) (actual rows= loops=)

21. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2012_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2012 a_2 (cost=0.43..2.69 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead >= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
22. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2013_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2013 a_3 (cost=0.56..2.82 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead >= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
23. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2014_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2014 a_4 (cost=0.56..2.82 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead >= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
24. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2015_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2015 a_5 (cost=0.57..2.82 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead >= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
25. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2016_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2016 a_6 (cost=0.57..2.83 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead >= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
26. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2017_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2017 a_7 (cost=0.57..2.83 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead >= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
27. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2018_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2018 a_8 (cost=0.57..2.83 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead >= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
28. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2019_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2019 a_9 (cost=0.58..2.83 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead >= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
29. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2020_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2020 a_10 (cost=0.44..2.69 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead >= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
30. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2021_id_modele_idx on annonce_dead_partition_2021 a_11 (cost=0.14..2.42 rows=1 width=8) (actual rows= loops=)

  • Index Cond: (id_modele = anns.id_modele)
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead >= (anns.dt_annonce)[1]) AND (id_energie = anns.id_energie) AND (id_boite = anns.id_boite) AND (km = anns.km) AND (id_site_source = anns.id_site_source) AND (dt_dead >= (anns.dt_check - '90 days'::interval)) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)))
31. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 4 (cost=146.72..200.16 rows=1 width=5) (actual rows= loops=)

32. 0.000 0.000 ↓ 0.0

Nested Loop (cost=146.72..200.15 rows=1 width=9) (actual rows= loops=)

  • Join Filter: (a_12.id_geographie = g_3.id_geographie)
33. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on geographie g_3 (cost=146.29..172.40 rows=1 width=4) (actual rows= loops=)

  • Recheck Cond: (id_pays = anns.id_pays)
  • Filter: st_dwithin(location, anns.location, '10000'::double precision, false)
34. 0.000 0.000 ↓ 0.0

BitmapAnd (cost=146.29..146.29 rows=1 width=0) (actual rows= loops=)

35. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on index_location (cost=0.00..2.15 rows=68 width=0) (actual rows= loops=)

  • Index Cond: (location && _st_expand(anns.location, '10000'::double precision))
36. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on geographie_id_pays_idx (cost=0.00..143.90 rows=13,556 width=0) (actual rows= loops=)

  • Index Cond: (id_pays = anns.id_pays)
37. 0.000 0.000 ↓ 0.0

Append (cost=0.43..27.63 rows=10 width=8) (actual rows= loops=)

38. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2012_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2012 a_12 (cost=0.43..2.69 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead <= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= ((anns.dt_annonce)[1] - '5 days'::interval)))
39. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2013_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2013 a_13 (cost=0.56..2.82 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead <= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= ((anns.dt_annonce)[1] - '5 days'::interval)))
40. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2014_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2014 a_14 (cost=0.56..2.82 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead <= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= ((anns.dt_annonce)[1] - '5 days'::interval)))
41. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2015_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2015 a_15 (cost=0.57..2.82 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead <= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= ((anns.dt_annonce)[1] - '5 days'::interval)))
42. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2016_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2016 a_16 (cost=0.57..2.83 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead <= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= ((anns.dt_annonce)[1] - '5 days'::interval)))
43. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2017_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2017 a_17 (cost=0.57..2.83 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead <= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= ((anns.dt_annonce)[1] - '5 days'::interval)))
44. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2018_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2018 a_18 (cost=0.57..2.83 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead <= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= ((anns.dt_annonce)[1] - '5 days'::interval)))
45. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2019_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2019 a_19 (cost=0.58..2.83 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead <= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= ((anns.dt_annonce)[1] - '5 days'::interval)))
46. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2020_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2020 a_20 (cost=0.44..2.69 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead <= (anns.dt_annonce)[1]) AND (id_site_source = anns.id_site_source) AND (dt_dead >= ((anns.dt_annonce)[1] - '5 days'::interval)))
47. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2021_id_modele_idx on annonce_dead_partition_2021 a_21 (cost=0.14..2.42 rows=1 width=8) (actual rows= loops=)

  • Index Cond: (id_modele = anns.id_modele)
  • Filter: ((id_ann < anns.id_ann) AND CASE WHEN (anns.couleur IS NOT NULL) THEN (((couleur)::text = (anns.couleur)::text) OR (couleur IS NULL)) ELSE true END AND CASE WHEN (anns.cylindre IS NOT NULL) THEN (((cylindre)::text = (anns.cylindre)::text) OR (cylindre IS NULL)) ELSE true END AND CASE WHEN (anns.puissance IS NOT NULL) THEN ((puissance = anns.puissance) OR (puissance IS NULL)) ELSE true END AND CASE WHEN (anns.finition IS NOT NULL) THEN (((finition)::text = (anns.finition)::text) OR (finition IS NULL)) ELSE true END AND CASE WHEN (id_tgeneration IS NOT NULL) THEN (id_tgeneration = anns.id_tgeneration) ELSE true END AND (dt_dead <= (anns.dt_annonce)[1]) AND (id_energie = anns.id_energie) AND (id_boite = anns.id_boite) AND (km = anns.km) AND (id_site_source = anns.id_site_source) AND (dt_dead >= ((anns.dt_annonce)[1] - '5 days'::interval)) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)))
48. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 5 (cost=146.72..200.04 rows=1 width=5) (actual rows= loops=)

49. 0.000 0.000 ↓ 0.0

Nested Loop (cost=146.72..200.03 rows=1 width=9) (actual rows= loops=)

  • Join Filter: (a_22.id_geographie = g_4.id_geographie)
50. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on geographie g_4 (cost=146.29..172.40 rows=1 width=4) (actual rows= loops=)

  • Recheck Cond: (id_pays = anns.id_pays)
  • Filter: st_dwithin(location, anns.location, '10000'::double precision, false)
51. 0.000 0.000 ↓ 0.0

BitmapAnd (cost=146.29..146.29 rows=1 width=0) (actual rows= loops=)

52. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on index_location (cost=0.00..2.15 rows=68 width=0) (actual rows= loops=)

  • Index Cond: (location && _st_expand(anns.location, '10000'::double precision))
53. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on geographie_id_pays_idx (cost=0.00..143.90 rows=13,556 width=0) (actual rows= loops=)

  • Index Cond: (id_pays = anns.id_pays)
54. 0.000 0.000 ↓ 0.0

Append (cost=0.43..27.50 rows=10 width=8) (actual rows= loops=)

55. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2012_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2012 a_22 (cost=0.43..2.68 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND (id_site_source <> anns.id_site_source) AND (dt_dead >= (anns.dt_annonce)[1]) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
56. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2013_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2013 a_23 (cost=0.56..2.81 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND (id_site_source <> anns.id_site_source) AND (dt_dead >= (anns.dt_annonce)[1]) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
57. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2014_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2014 a_24 (cost=0.56..2.81 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND (id_site_source <> anns.id_site_source) AND (dt_dead >= (anns.dt_annonce)[1]) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
58. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2015_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2015 a_25 (cost=0.57..2.81 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND (id_site_source <> anns.id_site_source) AND (dt_dead >= (anns.dt_annonce)[1]) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
59. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2016_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2016 a_26 (cost=0.57..2.82 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND (id_site_source <> anns.id_site_source) AND (dt_dead >= (anns.dt_annonce)[1]) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
60. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2017_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2017 a_27 (cost=0.57..2.82 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND (id_site_source <> anns.id_site_source) AND (dt_dead >= (anns.dt_annonce)[1]) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
61. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2018_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2018 a_28 (cost=0.57..2.82 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND (id_site_source <> anns.id_site_source) AND (dt_dead >= (anns.dt_annonce)[1]) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
62. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2019_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2019 a_29 (cost=0.58..2.82 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND (id_site_source <> anns.id_site_source) AND (dt_dead >= (anns.dt_annonce)[1]) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
63. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2020_date_part_id_modele_id_boite_id_idx on annonce_dead_partition_2020 a_30 (cost=0.44..2.68 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (id_modele = anns.id_modele) AND (id_boite = anns.id_boite) AND (id_energie = anns.id_energie) AND (prix[array_length(prix, 1)] = (anns.prix)[array_length(anns.prix, 1)]) AND (km = anns.km))
  • Filter: ((id_ann < anns.id_ann) AND (id_site_source <> anns.id_site_source) AND (dt_dead >= (anns.dt_annonce)[1]) AND (dt_dead >= (anns.dt_check - '90 days'::interval)))
64. 0.000 0.000 ↓ 0.0

Index Scan using annonce_dead_partition_2021_id_modele_idx on annonce_dead_partition_2021 a_31 (cost=0.14..2.40 rows=1 width=8) (actual rows= loops=)

  • Index Cond: (id_modele = anns.id_modele)