gpt4 book ai didi

sql - Oracle TOP N个有序行

转载 作者:行者123 更新时间:2023-12-02 05:34:32 25 4
gpt4 key购买 nike

我想从按日期排序的Oracle表中获取前N行。

这样做的常用方法是,对于我在SO / google上可以找到的每个问题,此解决方案都会返回。

Select *
from
(select * from
myTable
ordered by Date desc)
where rownum < N

在我的情况下,此解决方案不可行,因为myTable包含大量行
导致Oracle花太多时间才能返回子查询中的所有行。

问题是,有没有办法限制子查询中返回的ORDERED行的数量?

最佳答案

您认为Oracle必须在过滤掉第一个N之前返回子查询中的所有行是错误的。它将从子查询中开始提取行,并且在返回N行时停止

话虽如此,所以可能是,因为Oracle需要从表中选择所有行并对它们进行排序,然后才能开始返回它们。但是,如果在ORDER BY子句中使用的列上有一个索引,则可能不会。

Oracle与其他任何DBMS处于同一位置:如果您有一个大表,而排序时该列上没有索引,那么在不先获取所有行并对其进行排序的情况下,它怎么可能知道哪些行是前N位?

关于sql - Oracle TOP N个有序行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6858325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com