explain.depesz.com

PostgreSQL's explain analyze made readable

Result: wCxX4

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

GroupAggregate (cost=93,546.31..93,554.60 rows=119 width=68) (actual rows= loops=)

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

Sort (cost=93,546.31..93,547.94 rows=650 width=9) (actual rows= loops=)

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

Nested Loop (cost=1.09..93,515.94 rows=650 width=9) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Seq Scan on anns (cost=0.00..12.60 rows=130 width=280) (actual rows= loops=)

  • Filter: pro
5. 0.000 0.000 ↓ 0.0

Append (cost=1.09..719.21 rows=5 width=5) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

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

7. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.09..57.79 rows=1 width=9) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Index Scan using annonce_date_part_id_modele_id_boite_id_energie_prix_km_idx on annonce a (cost=0.67..2.92 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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))
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=1.09..57.79 rows=1 width=5) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.09..57.78 rows=1 width=9) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Index Scan using annonce_date_part_id_modele_id_boite_id_energie_prix_km_idx on annonce a_1 (cost=0.67..2.91 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • Filter: ((id_ann < anns.id_ann) AND (id_site_source <> anns.id_site_source))
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.83..201.24 rows=1 width=5) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Nested Loop (cost=146.83..201.23 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.53..28.70 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.53..2.79 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.67..2.93 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.67..2.93 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.67..2.93 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.68..2.93 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.68..2.93 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.68..2.94 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.68..2.94 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.54..2.80 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.53 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 (id_site_source = anns.id_site_source) AND (dt_dead >= (anns.dt_check - '90 days'::interval)) AND (date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END) AND (prix[array_length(prix, 1)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END))
31. 0.000 0.000 ↓ 0.0

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

32. 0.000 0.000 ↓ 0.0

Nested Loop (cost=146.83..201.23 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.53..28.70 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.53..2.79 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.67..2.93 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.67..2.93 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.67..2.93 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.68..2.93 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.68..2.93 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.68..2.94 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.68..2.94 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.54..2.80 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.53 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 (id_site_source = anns.id_site_source) AND (dt_dead >= ((anns.dt_annonce)[1] - '5 days'::interval)) AND (date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END) AND (prix[array_length(prix, 1)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END))
48. 0.000 0.000 ↓ 0.0

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

49. 0.000 0.000 ↓ 0.0

Nested Loop (cost=146.83..201.11 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.53..28.58 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.53..2.78 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.67..2.92 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.67..2.92 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.67..2.92 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.68..2.92 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.68..2.92 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.68..2.92 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.68..2.93 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.54..2.79 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)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END))
  • 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.51 rows=1 width=8) (actual rows= loops=)

  • Index Cond: (id_modele = anns.id_modele)" Filter: ((id_ann < anns.id_ann) AND (id_site_source <> anns.id_site_source) AND (dt_dead >= (anns.dt_annonce)[1]) AND (id_energie = anns.id_energie) AND (id_boite = anns.id_boite) AND (dt_dead >= (anns.dt_check - '90 days'::interval)) AND (date_part('year'::text, (dt_mec)::timestamp without time zone) = date_part('year'::text, (anns.dt_mec)::timestamp without time zone)) AND (km >= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (floor((0.99 * (anns.km)::numeric)))::integer ELSE (anns.km - 100) END) AND (km <= CASE WHEN (anns.km < 0) THEN 0 WHEN ((anns.km >= 0) AND (anns.km < 10000)) THEN (ceiling((1.01 * (anns.km)::numeric)))::integer ELSE (anns.km + 100) END) AND (prix[array_length(prix, 1)] >= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (floor((0.99 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] - 100) END) AND (prix[array_length(prix, 1)] <= CASE WHEN ((anns.prix)[array_length(anns.prix, 1)] < 0) THEN 0 WHEN (((anns.prix)[array_length(anns.prix, 1)] >= 0) AND ((anns.prix)[array_length(anns.prix, 1)] < 10000)) THEN (ceiling((1.01 * ((anns.prix)[array_length(anns.prix, 1)])::numeric)))::integer ELSE ((anns.prix)[array_length(anns.prix, 1)] + 100) END))