【发布时间】:2019-07-09 10:44:59
【问题描述】:
我在 oracle 12.1.0.2 上有一个包含代码、send_date 和 send_id 作为 pk 的表
我需要为每个值的最后一次代码发送获取一些值。
select * from (
select code, some_column,
row_number() over (partition by code order by send_date desc, send_id desc) n
from my_table
) where n=1
由于“其中 n=1”,Oracle 对 1 行进行了基数估计,因此对使用先前 SQL 作为子查询的复杂查询选择一个非常糟糕的执行计划。
我认为这是一个 oracle 错误 https://support.oracle.com/knowledge/Oracle%20Database%20Products/2118138_1.html
有什么解决方法可以绕过这个错误吗?
【问题讨论】:
-
如果您点击“登录”按钮,您链接到的页面可以让您看到一种解决方法和可能的补丁?
标签: sql oracle oracle12c window-functions