sql - 从 PARTITION BY 子句中删除 ORDER BY 子句?

标签 sql oracle oracle10g oracle11g analytic-functions

有没有办法可以减少下面内部查询的 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/

相关文章:

java - ( Hibernate Oracle 无法插入 NULL ) 如何插入自动生成的 ID?

sql - Oracle SQL 主键卡住

java - 为什么servlet中的数据没有插入到sql数据库中?

mysql - 如何选择sql中整个字段为大写的地方

php - 需要帮助将我的 App Engine PHP 与我的 Google Cloud SQL 数据库连接起来

mysql - 按查询字符串搜索顺序

php - WordPress MySQL 查询不工作但类似的查询工作

sql - 是否可以在 Oracle 中创建一个不作为主键的标识列,它与 H2 数据库有何关系?

sql - 在 Oracle10g 中有条件地选择多个列

sql - 提高查询效率——减少全表扫描?