explain.depesz.com

PostgreSQL's explain analyze made readable

Result: Y6bw

Settings

Optimization(s) for this plan:

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

GroupAggregate (cost=936,461.52..936,461.60 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_1.angle_to_sibling_sets)).value)::numeric))::double precision)) < '75'::double precision) AND (percentile_cont('0.9'::double precision) W
2. 0.000 0.000 ↓ 0.0

Sort (cost=936,461.52..936,461.53 rows=1 width=127) (actual rows= loops=)

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

Nested Loop (cost=739,819.27..936,461.51 rows=1 width=127) (actual rows= loops=)

  • Join Filter: (((a.gene)::text = (r.gene)::text) AND ((e_1.cell_type)::text = ((m.cell_type)::text)))
4. 0.000 0.000 ↓ 0.0

Nested Loop (cost=502,754.59..658,084.30 rows=1 width=140) (actual rows= loops=)

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

Hash Join (cost=363,829.13..518,525.42 rows=1 width=144) (actual rows= loops=)

  • Hash Cond: (((a.experiment_label)::text = (cp_1.experiment_label)::text) AND ((a.perturbation)::text = (cp_1.perturbation)::text) AND (a.sibling_set = ((jsonb_each_text(cp_1.angle_to_sibling_sets)).key)) AND ((e.cell_type)::text = (e_1.cell_type)::text))
6. 0.000 0.000 ↓ 0.0

Hash Join (cost=202,690.42..344,749.53 rows=60,177 width=125) (actual rows= loops=)

  • Hash Cond: ((a.gene)::text = (e.gene)::text)
7. 0.000 0.000 ↓ 0.0

Subquery Scan on a (cost=16,522.13..148,289.05 rows=2,584,114 width=108) (actual rows= loops=)

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

Nested Loop (cost=16,522.13..122,318.05 rows=2,597,100 width=108) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Subquery Scan on aspe (cost=16,495.14..16,496.57 rows=30 width=16) (actual rows= loops=)

  • Filter: ((aspe.labels ->> 'use_embeddings'::text))::boolean
10. 0.000 0.000 ↓ 0.0

Unique (cost=16,495.14..16,495.50 rows=61 width=353) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Sort (cost=16,495.14..16,495.32 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
12. 0.000 0.000 ↓ 0.0

Subquery Scan on all_sets_per_experiment (cost=15,767.62..16,492.88 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))
13. 0.000 0.000 ↓ 0.0

Unique (cost=15,767.62..16,057.35 rows=29,035 width=351) (actual rows= loops=)

14.          

CTE latest_labels

15. 0.000 0.000 ↓ 0.0

Unique (cost=8,010.45..8,360.51 rows=37,382 width=153) (actual rows= loops=)

16. 0.000 0.000 ↓ 0.0

Sort (cost=8,010.45..8,185.48 rows=70,012 width=153) (actual rows= loops=)

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

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

18. 0.000 0.000 ↓ 0.0

Sort (cost=7,407.12..7,503.69 rows=38,631 width=351) (actual rows= loops=)

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

Hash Join (cost=2,442.15..4,463.92 rows=38,631 width=351) (actual rows= loops=)

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

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

21. 0.000 0.000 ↓ 0.0

Hash (cost=2,067.09..2,067.09 rows=30,005 width=71) (actual rows= loops=)

22. 0.000 0.000 ↓ 0.0

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

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

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

24. 0.000 0.000 ↓ 0.0

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

25. 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=)

26. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on crispr_phenoscreen_perturbation_metrics cp (cost=27.00..3,081.54 rows=866 width=681) (actual rows= loops=)

  • Recheck Cond: (result_set_id = aspe.result_set_id)
  • Filter: ((NULLIF(zfactor_6x_siblings_set, 'null'::jsonb) IS NOT NULL) AND ((gene)::text !~~ '%%_control'::text))
27. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ix_exploration_crispr_phenoscreen_perturbation_metrics__2463 (cost=0.00..26.78 rows=883 width=0) (actual rows= loops=)

  • Index Cond: (result_set_id = aspe.result_set_id)
28. 0.000 0.000 ↓ 0.0

Hash (cost=186,166.35..186,166.35 rows=155 width=17) (actual rows= loops=)

29. 0.000 0.000 ↓ 0.0

Subquery Scan on e (cost=186,160.15..186,166.35 rows=155 width=17) (actual rows= loops=)

30. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=186,160.15..186,164.80 rows=155 width=17) (actual rows= loops=)

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

Sort (cost=186,160.15..186,160.54 rows=155 width=40) (actual rows= loops=)

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

Hash Join (cost=157,055.40..186,154.51 rows=155 width=40) (actual rows= loops=)

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

Nested Loop (cost=16,500.58..45,566.33 rows=8,483 width=33) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Unique (cost=16,495.14..16,495.50 rows=61 width=353) (actual rows= loops=)

35. 0.000 0.000 ↓ 0.0

Sort (cost=16,495.14..16,495.32 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,767.62..16,492.88 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,767.62..16,057.35 rows=29,035 width=351) (actual rows= loops=)

38.          

CTE latest_labels

39. 0.000 0.000 ↓ 0.0

Unique (cost=8,010.45..8,360.51 rows=37,382 width=153) (actual rows= loops=)

40. 0.000 0.000 ↓ 0.0

Sort (cost=8,010.45..8,185.48 rows=70,012 width=153) (actual rows= loops=)

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

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

42. 0.000 0.000 ↓ 0.0

Sort (cost=7,407.12..7,503.69 rows=38,631 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,442.15..4,463.92 rows=38,631 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..747.64 rows=37,382 width=48) (actual rows= loops=)

45. 0.000 0.000 ↓ 0.0

Hash (cost=2,067.09..2,067.09 rows=30,005 width=71) (actual rows= loops=)

46. 0.000 0.000 ↓ 0.0

Hash Join (cost=944.19..2,067.09 rows=30,005 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..714.05 rows=30,005 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

Bitmap Heap Scan on crispr_phenoscreen_gene_metrics cpgm (cost=5.45..475.17 rows=139 width=49) (actual rows= loops=)

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

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

  • Index Cond: (result_set_id = all_sets_per_experiment_1.result_set_id)
52. 0.000 0.000 ↓ 0.0

Hash (cost=140,551.78..140,551.78 rows=243 width=29) (actual rows= loops=)

53. 0.000 0.000 ↓ 0.0

Merge Join (cost=140,063.75..140,551.78 rows=243 width=29) (actual rows= loops=)

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

GroupAggregate (cost=138,925.46..139,223.54 rows=14,904 width=340) (actual rows= loops=)

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

Sort (cost=138,925.46..138,962.72 rows=14,904 width=230) (actual rows= loops=)

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

Hash Left Join (cost=4,457.60..137,892.36 rows=14,904 width=230) (actual rows= loops=)

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

Hash Left Join (cost=4,413.58..137,728.51 rows=14,904 width=226) (actual rows= loops=)

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

Hash Right Join (cost=4,396.38..137,506.38 rows=14,904 width=12) (actual rows= loops=)

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

Hash Right Join (cost=3,199.97..136,105.04 rows=14,904 width=28) (actual rows= loops=)

  • Hash Cond: (jc.job_id = j.id)
  • Join Filter: (NOT (SubPlan 4))
60. 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)
61. 0.000 0.000 ↓ 0.0

Hash (cost=3,013.67..3,013.67 rows=14,904 width=36) (actual rows= loops=)

62. 0.000 0.000 ↓ 0.0

Seq Scan on jobs j (cost=0.00..3,013.67 rows=14,904 width=36) (actual rows= loops=)

  • Filter: (deleted_at IS NULL)
63.          

SubPlan (for Hash Right Join)

64. 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)
65. 0.000 0.000 ↓ 0.0

Hash (cost=1,030.07..1,030.07 rows=13,307 width=35) (actual rows= loops=)

66. 0.000 0.000 ↓ 0.0

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

67. 0.000 0.000 ↓ 0.0

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

68. 0.000 0.000 ↓ 0.0

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

69. 0.000 0.000 ↓ 0.0

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

70. 0.000 0.000 ↓ 0.0

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

71. 0.000 0.000 ↓ 0.0

Sort (cost=1,138.29..1,138.84 rows=217 width=33) (actual rows= loops=)

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

Seq Scan on experiments e_2 (cost=0.00..1,129.87 rows=217 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))
73. 0.000 0.000 ↓ 0.0

Hash (cost=160,278.67..160,278.67 rows=43,002 width=135) (actual rows= loops=)

74. 0.000 0.000 ↓ 0.0

Hash Join (cost=17,654.72..160,278.67 rows=43,002 width=135) (actual rows= loops=)

  • Hash Cond: ((cp_1.experiment_label)::text = (e_1.label)::text)
75. 0.000 0.000 ↓ 0.0

Nested Loop (cost=16,522.14..122,457.32 rows=2,637,000 width=102) (actual rows= loops=)

76. 0.000 0.000 ↓ 0.0

Subquery Scan on aspe_1 (cost=16,495.14..16,496.57 rows=30 width=16) (actual rows= loops=)

  • Filter: ((aspe_1.labels ->> 'use_embeddings'::text))::boolean
77. 0.000 0.000 ↓ 0.0

Unique (cost=16,495.14..16,495.50 rows=61 width=353) (actual rows= loops=)

78. 0.000 0.000 ↓ 0.0

Sort (cost=16,495.14..16,495.32 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
79. 0.000 0.000 ↓ 0.0

Subquery Scan on all_sets_per_experiment_2 (cost=15,767.62..16,492.88 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))
80. 0.000 0.000 ↓ 0.0

Unique (cost=15,767.62..16,057.35 rows=29,035 width=351) (actual rows= loops=)

81.          

CTE latest_labels

82. 0.000 0.000 ↓ 0.0

Unique (cost=8,010.45..8,360.51 rows=37,382 width=153) (actual rows= loops=)

83. 0.000 0.000 ↓ 0.0

Sort (cost=8,010.45..8,185.48 rows=70,012 width=153) (actual rows= loops=)

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

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

85. 0.000 0.000 ↓ 0.0

Sort (cost=7,407.12..7,503.69 rows=38,631 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
86. 0.000 0.000 ↓ 0.0

Hash Join (cost=2,442.15..4,463.92 rows=38,631 width=351) (actual rows= loops=)

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

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

88. 0.000 0.000 ↓ 0.0

Hash (cost=2,067.09..2,067.09 rows=30,005 width=71) (actual rows= loops=)

89. 0.000 0.000 ↓ 0.0

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

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

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

91. 0.000 0.000 ↓ 0.0

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

92. 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=)

93. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on crispr_phenoscreen_perturbation_metrics cp_1 (cost=27.00..3,079.34 rows=879 width=441) (actual rows= loops=)

  • Recheck Cond: (result_set_id = aspe_1.result_set_id)
  • Filter: (NULLIF(angle_to_sibling_sets, 'null'::jsonb) IS NOT NULL)
94. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ix_exploration_crispr_phenoscreen_perturbation_metrics__2463 (cost=0.00..26.78 rows=883 width=0) (actual rows= loops=)

  • Index Cond: (result_set_id = aspe_1.result_set_id)
95. 0.000 0.000 ↓ 0.0

Hash (cost=1,129.87..1,129.87 rows=217 width=33) (actual rows= loops=)

96. 0.000 0.000 ↓ 0.0

Seq Scan on experiments e_1 (cost=0.00..1,129.87 rows=217 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

GroupAggregate (cost=138,925.46..139,223.54 rows=14,904 width=340) (actual rows= loops=)

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

Sort (cost=138,925.46..138,962.72 rows=14,904 width=230) (actual rows= loops=)

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

Hash Left Join (cost=4,457.60..137,892.36 rows=14,904 width=230) (actual rows= loops=)

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

Hash Left Join (cost=4,413.58..137,728.51 rows=14,904 width=226) (actual rows= loops=)

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

Hash Right Join (cost=4,396.38..137,506.38 rows=14,904 width=12) (actual rows= loops=)

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

Hash Right Join (cost=3,199.97..136,105.04 rows=14,904 width=28) (actual rows= loops=)

  • Hash Cond: (jc_1.job_id = j_1.id)
  • Join Filter: (NOT (SubPlan 5))
103. 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)
104. 0.000 0.000 ↓ 0.0

Hash (cost=3,013.67..3,013.67 rows=14,904 width=36) (actual rows= loops=)

105. 0.000 0.000 ↓ 0.0

Seq Scan on jobs j_1 (cost=0.00..3,013.67 rows=14,904 width=36) (actual rows= loops=)

  • Filter: (deleted_at IS NULL)
106.          

SubPlan (for Hash Right Join)

107. 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)
108. 0.000 0.000 ↓ 0.0

Hash (cost=1,030.07..1,030.07 rows=13,307 width=35) (actual rows= loops=)

109. 0.000 0.000 ↓ 0.0

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

110. 0.000 0.000 ↓ 0.0

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

111. 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=)

112. 0.000 0.000 ↓ 0.0

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

113. 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=)

114. 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)
115. 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)
116. 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=)

117. 0.000 0.000 ↓ 0.0

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

118. 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