我有一个操作,它给我一个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秒。 有没有更好的方法使用以前计算的数据对表格进行排序?
答案 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秒。