创建高效的Oracle/PL_SQL查询帮助

Kev*_*vin 1 database oracle

希望你有一个美好的一天.我遇到了一个问题.

在数据库中,使用distinct是无效的,并且会造成许多超时问题.

所以在一个简单的例子中我有......

select distinct first_value(e.error_message) over (order by create_date desc)
                  from database e
Run Code Online (Sandbox Code Playgroud)

哪一个错误消息最新排序的结果,它是同类中的第一个值,现在当我运行它需要大约.8秒这是不错的,但问题是,加入并使这个查询更大,做更多只是检索错误将是一个问题.

所以如果我做以下查询......

select  first_value(e.error_message) over (order by create_date desc)
                  from database e
Run Code Online (Sandbox Code Playgroud)

此查询大约需要0.4秒,但问题只是想要给出的第一个项目.我该怎么做,我不知道具体的行号.

感谢大家.

*编辑

只是为了让每个人都知道,使用Rob的解决方案使我的查询更加高效,不要在可能时使用DISTINCT !!!!

Rob*_*ijk 5

select max(e.error_message) keep (dense_rank last order by create_date)
  from database e
Run Code Online (Sandbox Code Playgroud)

编辑:这是LAST功能文档的链接

它按create_date排序时选择最后一条错误消息.