有没有办法可以减少下面内部查询的 OVER 部分中“ORDER BY lro_pid”子句的影响?
SELECT *
FROM (SELECT a.*,
Row_Number() over (PARTITION BY search_point_type
ORDER BY lro_pid) spt_rank
FROM lro_search_point a
ORDER BY spt_rank)
WHERE spt_rank = 1;
我不在乎在分区内对这个结果进行排序,因为我想通过完全不同的变量对其进行排序。 lro_pid 是一个索引列,但目前看来这仍然是浪费资源。 (也许有一种方法可以将排序限制在单行的范围内?希望根本不会花费时间/精力在分区内进行排序)
最佳答案
需要尝试的一些事情:
你可以例如OVER 子句中的 ORDER BY 'constant'
?
如果不允许按常量排序,那么 ORDER BY (lro_pid * 0)
怎么样?
我不是 Oracle 专家(MSSQL 更适合我) - 因此需要回答您的问题!
关于sql - 从 PARTITION BY 子句中删除 ORDER BY 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6221038/