gpt4 book ai didi

oracle - 无法从大表中检索结果

转载 作者:行者123 更新时间:2023-12-01 01:04:13 25 4
gpt4 key购买 nike

我正在对一个有 15,000,000 行的表发出一个非常简单的查询。我遇到了关于 rownum 的不稳定行为限制。

例如,以下查询

select * from (select * from my_table order by id) where rownum < 2000000

工作没有问题,还有这个
select * from (select * from my_table order by id) where rownum between 1 and 15

但这个永远不会完成
select * from (select * from my_table order by id) where rownum between 2 and 15

我无法解释这种行为:当下限为 0 时,上限可以很大而不会遇到任何麻烦,但是当下限仅为 2 时,它永远不会完成。同样奇怪的是没有中间:它要么几乎立即返回,要么永远不会完成。

该表在 id 上建立索引列是 asc - 排序索引;否则我认为即使只找到第一条记录也需要全表排序。

我应该在哪里调查才能解决这个问题?

我的数据库是 Oracle Database 11g Release 11.2.0.3.0 - 64bit Production

最佳答案

尝试这个:

SELECT * FROM (
SELECT /*+ FIRST_ROWS */ myquery.*, ROWNUM rnum
FROM (
SELECT * FROM mytable ORDER BY id
) myquery
WHERE ROWNUM <= 15
) WHERE rnum >= 2;

关于oracle - 无法从大表中检索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20153232/

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