2016-09-15 31 views
0

我有一個查詢是我的程序中的最後一步,從20-50k的唯一身份證的任何地方通過。我需要檢索一些行數據。基表有約1500萬行。有沒有一種好辦法來解決這個問題?目前在Postgres中這樣做的表現並不充分。查找大量的個人ID

我打算使用不同於基於SQL的數據庫的其他技術。表現是重要的。

SELECT my_params FROM table WHERE id in (' + set_of_ids + ') 
ORDER BY score DESC LIMIT 100 
+0

你在哪裏得到的ID? – Dave

+0

ID來自另一個數據庫,並在Python程序中進行後處理。 –

+0

您需要多久才能返回? – Dave

回答

0

在同一個事務中創建一個臨時表和COPY值。

根據需要撒上索引並加入兩個表格。

好胃口!

0

與大IN列表查詢的性能往往被它改寫存在改進的JOIN使用VALUES條款:

SELECT t.my_params 
FROM table t 
JOIN (
    VALUES (1),(2),(3),(4),..... 
) as x(id) on x.id = t.id;