簡體   English   中英

加快Sql查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM