[英]Speeding up Sql query
我有一個包含約5000萬個條目的Postgresql表。 現在,我想通過查找第一次和最后一次出現時間戳來找到兩個id,以便給我一系列輸入。
查找“第一個” ID大約需要100毫秒。
但是找到第二個ID大約需要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開始。
有什么辦法可以加快第二個查詢的速度嗎?
如果您還沒有索引,我將創建以下索引:
create index ix1 on transactions ("hashBlock", id);
create index ix2 on blocks (n_time, id, hash);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.