explain.depesz.com

PostgreSQL's explain analyze made readable

Result: 5iy0 : Optimization for: Optimization for: Optimization for: plan #Y6bw; plan #traj; plan #bIEm

Settings

Optimization path:

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

GroupAggregate (cost=1,200,530.48..1,200,530.56 rows=1 width=91) (actual rows= loops=)

  • Group Key: a.gene, e_1.cell_type, a.perturbation, a.sibling_set
  • Filter: ((percentile_cont('0.5'::double precision) WITHIN GROUP (ORDER BY (((((jsonb_each_text(cp.angle_to_sibling_sets)).value)::numeric))::double precision)) < '75'::double precision) AND (percentile_cont('0.9'::double precision) WITHIN GROUP (ORDER BY ((('6'::numeric * pow(('1'::numeric - a.zfactor), '2'::numeric)))::double precision)) <= '12'::double precision))
2. 0.000 0.000 ↓ 0.0

Sort (cost=1,200,530.48..1,200,530.49 rows=1 width=131) (actual rows= loops=)

  • Sort Key: a.gene, e_1.cell_type, a.perturbation, a.sibling_set
3. 0.000 0.000 ↓ 0.0

Hash Join (cost=902,652.30..1,200,530.47 rows=1 width=131) (actual rows= loops=)

  • Hash Cond: (((cp.experiment_label)::text = (a.experiment_label)::text) AND ((cp.perturbation)::text = (a.perturbation)::text) AND (((jsonb_each_text(cp.angle_to_sibling_sets)).key) = a.sibling_set))
4. 0.000 0.000 ↓ 0.0

Hash Join (cost=16,552.48..205,460.64 rows=5,128,000 width=102) (actual rows= loops=)

  • Hash Cond: (cp.result_set_id = aspe.result_set_id)
5. 0.000 0.000 ↓ 0.0

Seq Scan on crispr_phenoscreen_perturbation_metrics cp (cost=0.00..159,088.00 rows=909,589 width=440) (actual rows= loops=)

  • Filter: (NULLIF(angle_to_sibling_sets, 'null'::jsonb) IS NOT NULL)
6. 0.000 0.000 ↓ 0.0

Hash (cost=16,551.72..16,551.72 rows=61 width=16) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

Subquery Scan on aspe (cost=16,550.74..16,551.72 rows=61 width=16) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Unique (cost=16,550.74..16,551.11 rows=61 width=353) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Sort (cost=16,550.74..16,550.92 rows=73 width=353) (actual rows= loops=)

  • Sort Key: all_sets_per_experiment.experiment_label, (COALESCE(all_sets_per_experiment.is_active, false)) DESC, (COALESCE(all_sets_per_experiment.is_active, true)) DESC, all_sets_per_experiment.created_at DESC
10. 0.000 0.000 ↓ 0.0

Subquery Scan on all_sets_per_experiment (cost=15,821.15..16,548.48 rows=73 width=353) (actual rows= loops=)

  • Filter: (((all_sets_per_experiment.is_active IS NULL) OR all_sets_per_experiment.is_active) AND ((all_sets_per_experiment.labels -> 'use_embeddings'::text) = 'true'::jsonb))
11. 0.000 0.000 ↓ 0.0

Unique (cost=15,821.15..16,111.92 rows=29,104 width=351) (actual rows= loops=)

12.          

CTE latest_labels

13. 0.000 0.000 ↓ 0.0

Unique (cost=8,040.97..8,392.28 rows=37,516 width=153) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Sort (cost=8,040.97..8,216.63 rows=70,263 width=153) (actual rows= loops=)

  • Sort Key: result_set_labels_1.result_set_id, result_set_labels_1.created_at DESC
15. 0.000 0.000 ↓ 0.0

Seq Scan on result_set_labels result_set_labels_1 (cost=0.00..2,384.63 rows=70,263 width=153) (actual rows= loops=)

16. 0.000 0.000 ↓ 0.0

Sort (cost=7,428.86..7,525.79 rows=38,770 width=351) (actual rows= loops=)

  • Sort Key: ds.experiment_label, ds.result_set_id, rs.created_at DESC, ds.created_at DESC
17. 0.000 0.000 ↓ 0.0

Hash Join (cost=2,445.05..4,474.07 rows=38,770 width=351) (actual rows= loops=)

  • Hash Cond: (ll.result_set_id = ds.result_set_id)
18. 0.000 0.000 ↓ 0.0

CTE Scan on latest_labels ll (cost=0.00..750.32 rows=37,516 width=48) (actual rows= loops=)

19. 0.000 0.000 ↓ 0.0

Hash (cost=2,069.09..2,069.09 rows=30,077 width=71) (actual rows= loops=)

20. 0.000 0.000 ↓ 0.0

Hash Join (cost=944.19..2,069.09 rows=30,077 width=71) (actual rows= loops=)

  • Hash Cond: (ds.result_set_id = rs.id)
21. 0.000 0.000 ↓ 0.0

Seq Scan on dart_statuses ds (cost=0.00..715.77 rows=30,077 width=47) (actual rows= loops=)

22. 0.000 0.000 ↓ 0.0

Hash (cost=585.75..585.75 rows=28,675 width=24) (actual rows= loops=)

23. 0.000 0.000 ↓ 0.0

Seq Scan on result_sets rs (cost=0.00..585.75 rows=28,675 width=24) (actual rows= loops=)

24. 0.000 0.000 ↓ 0.0

Hash (cost=886,099.81..886,099.81 rows=1 width=145) (actual rows= loops=)

25. 0.000 0.000 ↓ 0.0

Nested Loop (cost=623,865.61..886,099.81 rows=1 width=145) (actual rows= loops=)

  • Join Filter: (e_1.id = e_4.id)
26. 0.000 0.000 ↓ 0.0

Hash Join (cost=484,685.50..746,252.62 rows=1 width=149) (actual rows= loops=)

  • Hash Cond: (((a.gene)::text = (d.gene)::text) AND ((e_1.cell_type)::text = d.cell_type))
27. 0.000 0.000 ↓ 0.0

Hash Join (cost=206,308.29..467,447.96 rows=12 width=162) (actual rows= loops=)

  • Hash Cond: (((a.gene)::text = (e.gene)::text) AND ((e_1.cell_type)::text = (e.cell_type)::text))
28. 0.000 0.000 ↓ 0.0

Hash Join (cost=17,687.60..278,190.80 rows=84,846 width=141) (actual rows= loops=)

  • Hash Cond: ((a.experiment_label)::text = (e_1.label)::text)
29. 0.000 0.000 ↓ 0.0

Subquery Scan on a (cost=16,552.48..257,446.12 rows=5,002,960 width=108) (actual rows= loops=)

  • Filter: (a.zfactor IS NOT NULL)
30. 0.000 0.000 ↓ 0.0

Hash Join (cost=16,552.48..207,165.12 rows=5,028,100 width=108) (actual rows= loops=)

  • Hash Cond: (cp_1.result_set_id = aspe_1.result_set_id)
31. 0.000 0.000 ↓ 0.0

Seq Scan on crispr_phenoscreen_perturbation_metrics cp_1 (cost=0.00..161,373.40 rows=891,874 width=682) (actual rows= loops=)

  • Filter: ((NULLIF(zfactor_6x_siblings_set, 'null'::jsonb) IS NOT NULL) AND ((gene)::text !~~ '%%_control'::text))
32. 0.000 0.000 ↓ 0.0

Hash (cost=16,551.72..16,551.72 rows=61 width=16) (actual rows= loops=)

33. 0.000 0.000 ↓ 0.0

Subquery Scan on aspe_1 (cost=16,550.74..16,551.72 rows=61 width=16) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Unique (cost=16,550.74..16,551.11 rows=61 width=353) (actual rows= loops=)

35. 0.000 0.000 ↓ 0.0

Sort (cost=16,550.74..16,550.92 rows=73 width=353) (actual rows= loops=)

  • Sort Key: all_sets_per_experiment_1.experiment_label, (COALESCE(all_sets_per_experiment_1.is_active, false)) DESC, (COALESCE(all_sets_per_experiment_1.is_active, true)) DESC, all_sets_per_experiment_1.created_at DESC
36. 0.000 0.000 ↓ 0.0

Subquery Scan on all_sets_per_experiment_1 (cost=15,821.15..16,548.48 rows=73 width=353) (actual rows= loops=)

  • Filter: (((all_sets_per_experiment_1.is_active IS NULL) OR all_sets_per_experiment_1.is_active) AND ((all_sets_per_experiment_1.labels -> 'use_embeddings'::text) = 'true'::jsonb))
37. 0.000 0.000 ↓ 0.0

Unique (cost=15,821.15..16,111.92 rows=29,104 width=351) (actual rows= loops=)

38.          

CTE latest_labels

39. 0.000 0.000 ↓ 0.0

Unique (cost=8,040.97..8,392.28 rows=37,516 width=153) (actual rows= loops=)

40. 0.000 0.000 ↓ 0.0

Sort (cost=8,040.97..8,216.63 rows=70,263 width=153) (actual rows= loops=)

  • Sort Key: result_set_labels.result_set_id, result_set_labels.created_at DESC
41. 0.000 0.000 ↓ 0.0

Seq Scan on result_set_labels (cost=0.00..2,384.63 rows=70,263 width=153) (actual rows= loops=)

42. 0.000 0.000 ↓ 0.0

Sort (cost=7,428.86..7,525.79 rows=38,770 width=351) (actual rows= loops=)

  • Sort Key: ds_1.experiment_label, ds_1.result_set_id, rs_1.created_at DESC, ds_1.created_at DESC
43. 0.000 0.000 ↓ 0.0

Hash Join (cost=2,445.05..4,474.07 rows=38,770 width=351) (actual rows= loops=)

  • Hash Cond: (ll_1.result_set_id = ds_1.result_set_id)
44. 0.000 0.000 ↓ 0.0

CTE Scan on latest_labels ll_1 (cost=0.00..750.32 rows=37,516 width=48) (actual rows= loops=)

45. 0.000 0.000 ↓ 0.0

Hash (cost=2,069.09..2,069.09 rows=30,077 width=71) (actual rows= loops=)

46. 0.000 0.000 ↓ 0.0

Hash Join (cost=944.19..2,069.09 rows=30,077 width=71) (actual rows= loops=)

  • Hash Cond: (ds_1.result_set_id = rs_1.id)
47. 0.000 0.000 ↓ 0.0

Seq Scan on dart_statuses ds_1 (cost=0.00..715.77 rows=30,077 width=47) (actual rows= loops=)

48. 0.000 0.000 ↓ 0.0

Hash (cost=585.75..585.75 rows=28,675 width=24) (actual rows= loops=)

49. 0.000 0.000 ↓ 0.0

Seq Scan on result_sets rs_1 (cost=0.00..585.75 rows=28,675 width=24) (actual rows= loops=)

50. 0.000 0.000 ↓ 0.0

Hash (cost=1,132.27..1,132.27 rows=228 width=33) (actual rows= loops=)

51. 0.000 0.000 ↓ 0.0

Seq Scan on experiments e_1 (cost=0.00..1,132.27 rows=228 width=33) (actual rows= loops=)

  • Filter: (pass_data_qc AND ((tags IS NULL) OR (NOT ('{DEVELOPMENT}'::character varying[] && tags))) AND ((assay_type)::text = '1536-crispr_lipofection'::text) AND ((experiment_team)::text = 'HTS'::text))
52. 0.000 0.000 ↓ 0.0

Hash (cost=188,617.99..188,617.99 rows=180 width=21) (actual rows= loops=)

53. 0.000 0.000 ↓ 0.0

Subquery Scan on e (cost=188,609.89..188,617.99 rows=180 width=21) (actual rows= loops=)

54. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=188,609.89..188,616.19 rows=180 width=21) (actual rows= loops=)

  • Group Key: cpgm.gene, e_2.cell_type
  • Filter: ((count(DISTINCT e_2.label) >= 2) AND (percentile_cont('0.5'::double precision) WITHIN GROUP (ORDER BY ((cpgm.avg_cvangle_gene_pval)::double precision)) < '0.01'::double precision))
55. 0.000 0.000 ↓ 0.0

Sort (cost=188,609.89..188,610.34 rows=180 width=40) (actual rows= loops=)

  • Sort Key: cpgm.gene, e_2.cell_type
56. 0.000 0.000 ↓ 0.0

Hash Join (cost=157,395.00..188,603.15 rows=180 width=40) (actual rows= loops=)

  • Hash Cond: ((cpgm.experiment_label)::text = (e_2.label)::text)
57. 0.000 0.000 ↓ 0.0

Nested Loop (cost=16,556.26..47,728.49 rows=9,098 width=33) (actual rows= loops=)

58. 0.000 0.000 ↓ 0.0

Unique (cost=16,550.74..16,551.11 rows=61 width=353) (actual rows= loops=)

59. 0.000 0.000 ↓ 0.0

Sort (cost=16,550.74..16,550.92 rows=73 width=353) (actual rows= loops=)

  • Sort Key: all_sets_per_experiment_2.experiment_label, (COALESCE(all_sets_per_experiment_2.is_active, false)) DESC, (COALESCE(all_sets_per_experiment_2.is_active, true)) DESC, all_sets_per_experiment_2.created_at DESC
60. 0.000 0.000 ↓ 0.0

Subquery Scan on all_sets_per_experiment_2 (cost=15,821.15..16,548.48 rows=73 width=353) (actual rows= loops=)

  • Filter: (((all_sets_per_experiment_2.is_active IS NULL) OR all_sets_per_experiment_2.is_active) AND ((all_sets_per_experiment_2.labels -> 'use_embeddings'::text) = 'true'::jsonb))
61. 0.000 0.000 ↓ 0.0

Unique (cost=15,821.15..16,111.92 rows=29,104 width=351) (actual rows= loops=)

62.          

CTE latest_labels

63. 0.000 0.000 ↓ 0.0

Unique (cost=8,040.97..8,392.28 rows=37,516 width=153) (actual rows= loops=)

64. 0.000 0.000 ↓ 0.0

Sort (cost=8,040.97..8,216.63 rows=70,263 width=153) (actual rows= loops=)

  • Sort Key: result_set_labels_2.result_set_id, result_set_labels_2.created_at DESC
65. 0.000 0.000 ↓ 0.0

Seq Scan on result_set_labels result_set_labels_2 (cost=0.00..2,384.63 rows=70,263 width=153) (actual rows= loops=)

66. 0.000 0.000 ↓ 0.0

Sort (cost=7,428.86..7,525.79 rows=38,770 width=351) (actual rows= loops=)

  • Sort Key: ds_2.experiment_label, ds_2.result_set_id, rs_2.created_at DESC, ds_2.created_at DESC
67. 0.000 0.000 ↓ 0.0

Hash Join (cost=2,445.05..4,474.07 rows=38,770 width=351) (actual rows= loops=)

  • Hash Cond: (ll_2.result_set_id = ds_2.result_set_id)
68. 0.000 0.000 ↓ 0.0

CTE Scan on latest_labels ll_2 (cost=0.00..750.32 rows=37,516 width=48) (actual rows= loops=)

69. 0.000 0.000 ↓ 0.0

Hash (cost=2,069.09..2,069.09 rows=30,077 width=71) (actual rows= loops=)

70. 0.000 0.000 ↓ 0.0

Hash Join (cost=944.19..2,069.09 rows=30,077 width=71) (actual rows= loops=)

  • Hash Cond: (ds_2.result_set_id = rs_2.id)
71. 0.000 0.000 ↓ 0.0

Seq Scan on dart_statuses ds_2 (cost=0.00..715.77 rows=30,077 width=47) (actual rows= loops=)

72. 0.000 0.000 ↓ 0.0

Hash (cost=585.75..585.75 rows=28,675 width=24) (actual rows= loops=)

73. 0.000 0.000 ↓ 0.0

Seq Scan on result_sets rs_2 (cost=0.00..585.75 rows=28,675 width=24) (actual rows= loops=)

74. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on crispr_phenoscreen_gene_metrics cpgm (cost=5.52..509.60 rows=149 width=49) (actual rows= loops=)

  • Recheck Cond: (result_set_id = all_sets_per_experiment_2.result_set_id)
  • Filter: ((gene)::text !~~ '%%_control'::text)
75. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ix_exploration_crispr_phenoscreen_gene_metrics_result_set_id (cost=0.00..5.49 rows=151 width=0) (actual rows= loops=)

  • Index Cond: (result_set_id = all_sets_per_experiment_2.result_set_id)
76. 0.000 0.000 ↓ 0.0

Hash (cost=140,835.42..140,835.42 rows=266 width=29) (actual rows= loops=)

77. 0.000 0.000 ↓ 0.0

Merge Join (cost=140,321.31..140,835.42 rows=266 width=29) (actual rows= loops=)

  • Merge Cond: (e_3.id = e_2.id)
78. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=139,180.11..139,494.03 rows=15,696 width=340) (actual rows= loops=)

  • Group Key: e_3.id, et.label, b.seed_at
79. 0.000 0.000 ↓ 0.0

Sort (cost=139,180.11..139,219.35 rows=15,696 width=230) (actual rows= loops=)

  • Sort Key: e_3.id, et.label, b.seed_at
80. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=4,478.67..138,086.24 rows=15,696 width=230) (actual rows= loops=)

  • Hash Cond: (e_3.batch_id = b.id)
81. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=4,434.65..137,916.01 rows=15,696 width=226) (actual rows= loops=)

  • Hash Cond: (e_3.experiment_type_id = et.id)
82. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=4,417.45..137,682.99 rows=15,696 width=12) (actual rows= loops=)

  • Hash Cond: ((j.experiment_label)::text = (e_3.label)::text)
83. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=3,217.96..136,267.68 rows=15,696 width=28) (actual rows= loops=)

  • Hash Cond: (jc.job_id = j.id)
  • Join Filter: (NOT (SubPlan 4))
84. 0.000 0.000 ↓ 0.0

Seq Scan on job_events jc (cost=0.00..1,373.69 rows=11,393 width=16) (actual rows= loops=)

  • Filter: ((event)::text = 'experiment_evaluation_pipeline_completed'::text)
85. 0.000 0.000 ↓ 0.0

Hash (cost=3,021.76..3,021.76 rows=15,696 width=36) (actual rows= loops=)

86. 0.000 0.000 ↓ 0.0

Seq Scan on jobs j (cost=0.00..3,021.76 rows=15,696 width=36) (actual rows= loops=)

  • Filter: (deleted_at IS NULL)
87.          

SubPlan (for Hash Right Join)

88. 0.000 0.000 ↓ 0.0

Index Scan using ix_ccc_job_events_job_id_event_time on job_events (cost=0.41..12.04 rows=1 width=0) (actual rows= loops=)

  • Index Cond: ((job_id = j.id) AND (event_time >= jc.event_time))
  • Filter: ((event)::text = 'experiment_evaluation_pipeline_invalidated'::text)
89. 0.000 0.000 ↓ 0.0

Hash (cost=1,031.44..1,031.44 rows=13,444 width=35) (actual rows= loops=)

90. 0.000 0.000 ↓ 0.0

Seq Scan on experiments e_3 (cost=0.00..1,031.44 rows=13,444 width=35) (actual rows= loops=)

91. 0.000 0.000 ↓ 0.0

Hash (cost=13.20..13.20 rows=320 width=222) (actual rows= loops=)

92. 0.000 0.000 ↓ 0.0

Seq Scan on experiment_types et (cost=0.00..13.20 rows=320 width=222) (actual rows= loops=)

93. 0.000 0.000 ↓ 0.0

Hash (cost=24.01..24.01 rows=1,601 width=8) (actual rows= loops=)

94. 0.000 0.000 ↓ 0.0

Seq Scan on batches b (cost=0.00..24.01 rows=1,601 width=8) (actual rows= loops=)

95. 0.000 0.000 ↓ 0.0

Sort (cost=1,141.20..1,141.77 rows=228 width=33) (actual rows= loops=)

  • Sort Key: e_2.id
96. 0.000 0.000 ↓ 0.0

Seq Scan on experiments e_2 (cost=0.00..1,132.27 rows=228 width=33) (actual rows= loops=)

  • Filter: (pass_data_qc AND ((tags IS NULL) OR (NOT ('{DEVELOPMENT}'::character varying[] && tags))) AND ((assay_type)::text = '1536-crispr_lipofection'::text) AND ((experiment_team)::text = 'HTS'::text))
97. 0.000 0.000 ↓ 0.0

Hash (cost=276,240.35..276,240.35 rows=142,457 width=38) (actual rows= loops=)

98. 0.000 0.000 ↓ 0.0

Subquery Scan on d (cost=237,064.68..276,240.35 rows=142,457 width=38) (actual rows= loops=)

99. 0.000 0.000 ↓ 0.0

HashAggregate (cost=237,064.68..274,815.78 rows=142,457 width=80) (actual rows= loops=)

  • Group Key: m.cell_type, r.gene
  • Filter: (round(median(r.zfpkm), 3) >= '-3'::numeric)
100. 0.000 0.000 ↓ 0.0

Hash Join (cost=32.65..225,847.77 rows=1,495,588 width=20) (actual rows= loops=)

  • Hash Cond: (r.metadata_id = m.id)
101. 0.000 0.000 ↓ 0.0

Seq Scan on rnaseq_gene_expression r (cost=0.00..179,316.84 rows=8,656,284 width=24) (actual rows= loops=)

102. 0.000 0.000 ↓ 0.0

Hash (cost=31.82..31.82 rows=66 width=12) (actual rows= loops=)

103. 0.000 0.000 ↓ 0.0

Seq Scan on rnaseq_metadata m (cost=0.00..31.82 rows=66 width=12) (actual rows= loops=)

  • Filter: hts_protocol
104. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=139,180.11..139,494.03 rows=15,696 width=340) (actual rows= loops=)

  • Group Key: e_4.id, et_1.label, b_1.seed_at
105. 0.000 0.000 ↓ 0.0

Sort (cost=139,180.11..139,219.35 rows=15,696 width=230) (actual rows= loops=)

  • Sort Key: e_4.id, et_1.label, b_1.seed_at
106. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=4,478.67..138,086.24 rows=15,696 width=230) (actual rows= loops=)

  • Hash Cond: (e_4.batch_id = b_1.id)
107. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=4,434.65..137,916.01 rows=15,696 width=226) (actual rows= loops=)

  • Hash Cond: (e_4.experiment_type_id = et_1.id)
108. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=4,417.45..137,682.99 rows=15,696 width=12) (actual rows= loops=)

  • Hash Cond: ((j_1.experiment_label)::text = (e_4.label)::text)
109. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=3,217.96..136,267.68 rows=15,696 width=28) (actual rows= loops=)

  • Hash Cond: (jc_1.job_id = j_1.id)
  • Join Filter: (NOT (SubPlan 5))
110. 0.000 0.000 ↓ 0.0

Seq Scan on job_events jc_1 (cost=0.00..1,373.69 rows=11,393 width=16) (actual rows= loops=)

  • Filter: ((event)::text = 'experiment_evaluation_pipeline_completed'::text)
111. 0.000 0.000 ↓ 0.0

Hash (cost=3,021.76..3,021.76 rows=15,696 width=36) (actual rows= loops=)

112. 0.000 0.000 ↓ 0.0

Seq Scan on jobs j_1 (cost=0.00..3,021.76 rows=15,696 width=36) (actual rows= loops=)

  • Filter: (deleted_at IS NULL)
113.          

SubPlan (for Hash Right Join)

114. 0.000 0.000 ↓ 0.0

Index Scan using ix_ccc_job_events_job_id_event_time on job_events job_events_1 (cost=0.41..12.04 rows=1 width=0) (actual rows= loops=)

  • Index Cond: ((job_id = j_1.id) AND (event_time >= jc_1.event_time))
  • Filter: ((event)::text = 'experiment_evaluation_pipeline_invalidated'::text)
115. 0.000 0.000 ↓ 0.0

Hash (cost=1,031.44..1,031.44 rows=13,444 width=35) (actual rows= loops=)

116. 0.000 0.000 ↓ 0.0

Seq Scan on experiments e_4 (cost=0.00..1,031.44 rows=13,444 width=35) (actual rows= loops=)

117. 0.000 0.000 ↓ 0.0

Hash (cost=13.20..13.20 rows=320 width=222) (actual rows= loops=)

118. 0.000 0.000 ↓ 0.0

Seq Scan on experiment_types et_1 (cost=0.00..13.20 rows=320 width=222) (actual rows= loops=)

119. 0.000 0.000 ↓ 0.0

Hash (cost=24.01..24.01 rows=1,601 width=8) (actual rows= loops=)

120. 0.000 0.000 ↓ 0.0

Seq Scan on batches b_1 (cost=0.00..24.01 rows=1,601 width=8) (actual rows= loops=)