如何最好地索引此表?

我在PostgreSQL中有一个大表(> 2000 M行),必须尽快查询。它表示生物样品中基因表达的量度。问题是,有时直接在基因上进行测量(然后“探针”为NULL),有时通过基因的“探针”进行测量(然后仍设置“基因”)。一个基因可以有多个探针。没有其他表包含基因-探针关系。

CREATE TABLE "gene_measurements" (
  "gene" INTEGER NOT NULL REFERENCES "genes" ON DELETE CASCADE,
  "sample" INTEGER NOT NULL REFERENCES "samples" ON DELETE CASCADE,
  "probe" INTEGER REFERENCES "probes" ON DELETE CASCADE,
  "value" REAL NOT NULL
);

常见的查询包括获取给定样本中所有基因的表达,获取所有样本中给定基因/探针的表达或获取给定样本中给定基因/探针的表达。

现在,我有以下覆盖索引。它工作正常,但是非常占用空间。

CREATE INDEX "gene_measurements_gene_sample_value_index" ON "gene_measurements" ("gene", "sample", "value");
CREATE INDEX "gene_measurements_sample_gene_value_index" ON "gene_measurements" ("sample", "gene", "value");
CREATE INDEX "gene_measurements_sample_probe_value_index" ON "gene_measurements" ("sample", "probe", "value");
CREATE INDEX "gene_measurements_probe_sample_value_index" ON "gene_measurements" ("probe", "sample", "value");

在保持速度的同时,我可以做些聪明的事情来获得更整洁和/或更小的实现吗?谢谢!