我有一个Postgresql表,大约有5000万个条目。现在,我想找到两个id,通过查找第一次和最后一次出现时间戳,给我一个范围的条目。
找到“第一个”id需要大约100毫秒。
但是找到第二个身份大约需要3分钟。
查询查找第一个id
SELECT id
FROM transactions
WHERE "hashBlock" =
(SELECT hash
FROM blocks
WHERE n_time > 1262300400
ORDER BY id ASC
LIMTI 1)
ORDER BY id ASC
LIMTI 1查询查找第二个id
Select id
FROM transactions
WHERE "hashBlock" =
(SELECT hash
FROM blocks
WHERE n_time < 1306879200
ORDER BY id DESC
LIMTI 1)
ORDER BY id DESC
LIMTI 1我想,较长的运行时会导致查询从第一个id一直到找到一个满足查询的id,而第二个则从最后一个id开始。
有没有办法加快第二个查询的速度?
发布于 2019-07-10 17:28:58
如果您还没有索引,我将创建以下索引:
create index ix1 on transactions ("hashBlock", id);
create index ix2 on blocks (n_time, id, hash);https://stackoverflow.com/questions/56975307
复制相似问题