我知道这个问题必须经常出现,但我似乎找不到最近的答案来解决更简单的问题,比如我正在尝试做的事情。我读过几个类似的问题。
我正在使用 PostgreSQL 9.4 并有 2 个表,每个表都有接近 200M 的行,包含两种类型的指标。列是 the_date、feature_A、feature_B 和 24 小时指标。两个表中的指标差异很大,因此无法合并这些表。或者至少我不这么认为。某些指标不适用于所有功能,这就是将它们分开的原因。两个表在日期列上都有索引。
当我尝试执行连接它们的查询时,如果我指定一个日期,查询将在大约 3 秒内返回,这对我来说似乎是合理的。但是,如果我只是简单地进行a.the_date between '8/1/2017' and '8/1/2017'查询,现在基本上需要永远。我在 10 分钟后杀死它,因为我不耐烦。显然 PostgreSQL 不再使用索引。
为什么会这样,我怎样才能让它再次使用索引?我想做像a.the_date between '7/1/2017' and '7/31/2017'or 之类的查询a.the_date >= '1/1/2017'。现在我只是有一个 python 程序,一次运行一个日期的查询,然后汇总结果,这似乎是一个黑客。但至少它是可预测的,并且每天 3 秒快得多。
查询:
select a.feature_a, a.feature_b, count(*) tot_ct,
count(case when b.br01 > 0 and a.bc01 <= 10 then 1 end) cx01,
count(case when b.br02 > 0 and a.bc02 <= 10 then 1 end) cx02,
count(case when b.br03 > 0 and …Run Code Online (Sandbox Code Playgroud)