如何从oracle数据库中检索最后更新的记录?

时间:2013-02-05 15:27:50

标签: sql oracle

我想检索已从Oracle数据库中的表更新的最后20行,而不使用order by 然后是rownum函数,如

select * 
  from EMP 
 order by last_Updated 
 where rownum < 20

此查询需要花费大量时间。

2 个答案:

答案 0 :(得分:3)

您发布的查询不符合您的想法。该查询将获取20个任意行,然后按last_updated列排序。如果您想要20个最新的行,则需要在嵌套查询中ORDER BY last_updated,然后在外部查询中应用rownum谓词。

SELECT *
  FROM (SELECT *
          FROM emp
         ORDER BY last_updated desc)
 WHERE rownum <= 20

假设last_updated被编入索引,那应该是一个非常有效的查询。您应该能够对last_updated索引执行最小/最大扫描,然后执行count stopkey以仅获取前20行。如果您遇到此查询的性能问题,您会得到什么样的查询计划?

答案 1 :(得分:1)

尝试使用Rownum()并按update_date desc排序,其中rownum()&lt; = 20 ...