我有一个查询,这是我的程序的最后一步,它通过20-50k唯一ID的任何地方。我需要检索其中一些行数据。基表有大约1500万行。有没有一个很好的方法来解决这个问题?目前在Postgres中这样做是不够的。
我愿意使用除基于SQL的数据库以外的其他技术。表现就是最重要的。
SELECT my_params FROM table WHERE id in (' + set_of_ids + ')
ORDER BY score DESC LIMIT 100
答案 0 :(得分:0)
在同一事务中创建一个临时表并将COPY
值放入其中。
根据需要撒上索引并加入两个表。
Bon appetit!
答案 1 :(得分:0)
通过使用VALUES
子句将其重写为JOIN,可以经常改进具有大型IN列表的查询的性能:
SELECT t.my_params
FROM table t
JOIN (
VALUES (1),(2),(3),(4),.....
) as x(id) on x.id = t.id;