使用以前计算的数据对Postgresql表进行排序

时间:2016-07-06 14:02:52

标签: sql performance postgresql

我有一个操作,它给我一个ID列表和一些与这些ID相关的分数。 然后我需要查询数据库并使用上面的数据对行进行排序。

我试过了(我正在使用PostgreSQL):

SELECT * FROM sometable
LEFT OUTER JOIN (VALUES (629, 3), (624, 1))  /* Here is my data */
AS x(id, ordering)
USING (id)
WHERE some_column_id=1
ORDER BY x.ordering;

但是对于~10000行,它在我的机器上运行大约15秒。 有没有更好的方法使用以前计算的数据对表格进行排序?

1 个答案:

答案 0 :(得分:1)

此版本的性能如何?

SELECT st.*
FROM sometable st
WHERE st.some_column_id = 1
ORDER BY (CASE WHEN st.id = 629 then 3 WHEN st.id = 624 THEN 1 END);

sometable(some_column_id)上的索引也可能加快查询速度。

但是,我不明白为什么你的版本在10,000行的桌面上需要15秒。