Sql “over partition by”查询的基数错误

Sql “over partition by”查询的基数错误,sql,oracle,oracle12c,window-functions,Sql,Oracle,Oracle12c,Window Functions,在Oracle12.1.0.2上,我有一个带有代码、send_date和send_id as pk的表 我需要为每个值的最后一次代码发送获取一些值 从中选择* 选择“代码”,某些列, 分区上的行数按代码顺序按发送日期说明,发送id说明 从我的桌子上 其中n=1 由于n=1,Oracle对1行进行了基数估计,因此在使用上一个SQL作为子查询的复杂查询上选择一个非常糟糕的执行计划 我认为这是一个oracle错误 是否有绕过此错误的工作区 这可能是一个bug,也可能不是。更可能的是,这只是基于可用统

在Oracle12.1.0.2上,我有一个带有代码、send_date和send_id as pk的表

我需要为每个值的最后一次代码发送获取一些值

从中选择* 选择“代码”,某些列, 分区上的行数按代码顺序按发送日期说明,发送id说明 从我的桌子上 其中n=1 由于n=1,Oracle对1行进行了基数估计,因此在使用上一个SQL作为子查询的复杂查询上选择一个非常糟糕的执行计划

我认为这是一个oracle错误


是否有绕过此错误的工作区

这可能是一个bug,也可能不是。更可能的是,这只是基于可用统计数据的优化器的故障

对于您的查询和下面的查询,我建议使用代码索引、send_date desc、send_id desc和some_列

以下是编写查询的两种可选方法,因此您可以比较性能:

select code, 
       max(some_column) keep (dense rank first order by send_date desc, send_id desc) as somecolumn
from my_table
group by code;
以及:


这可能是一个bug,也可能不是。更可能的是,这只是基于可用统计数据的优化器的故障

对于您的查询和下面的查询,我建议使用代码索引、send_date desc、send_id desc和some_列

以下是编写查询的两种可选方法,因此您可以比较性能:

select code, 
       max(some_column) keep (dense rank first order by send_date desc, send_id desc) as somecolumn
from my_table
group by code;
以及:


如果通过“登录”按钮单击,链接到的页面可以让您看到一种解决方法和可能的修补程序?如果通过“登录”按钮单击,链接到的页面可以让您看到一种解决方法和可能的修补程序?