gpt4 book ai didi

sql - 如果我在没有 ORDER BY 的情况下对 SQL SELECT 查询进行分区,结果是否具有确定性?

转载 作者:行者123 更新时间:2023-12-02 06:12:01 28 4
gpt4 key购买 nike

我有 SQL SELECT 查询,它返回很多行,我必须将它分成几个分区。即,将最大结果设置为 10000 并迭代调用查询选择时间的行,增加第一个结果 (0, 10000, 20000)。所有查询都在同一个事务中完成,并且我的查询获取的数据在此过程中不会更改(尽管这些表中的其他数据可能会更改)。

可以只使用简单的选择:

select a from b where...

或者我必须使用 order by 和选择:
select a from b where ... order by c

为了确保我会得到所有的行?换句话说,是否保证没有 order by 的查询将始终以相同的顺序返回行?

向查询添加 order by 会显着降低查询的性能。

如果这很重要,我正在使用 Oracle。

编辑:不幸的是,我无法利用可滚动光标。

最佳答案

如果没有 order by 子句,绝对不能保证顺序,但是您的结果是否具有确定性(除了顺序之外)将取决于 where 子句。例如,如果您有一个唯一的 ID 列,并且您的 where 子句每次访问它时都包含不同的过滤器范围,那么您将获得无序的确定性结果,即:

select a from b where ID between 1 and 100
select a from b where ID between 101 and 200
select a from b where ID between 201 and 300

都将返回不同的结果集,但无法保证顺序。

关于sql - 如果我在没有 ORDER BY 的情况下对 SQL SELECT 查询进行分区,结果是否具有确定性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1707506/

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