如果所有记录的订单字段值都相同怎么办
What if the value of order field is the same for all the records
全部,假设 SQL 如下所示。
Select a, b ,c from table1 order by c
如果table1
中的所有行在字段c中具有相同的字段值。我想知道每次执行 SQL.
结果的顺序是否相同
假设 table1
中的数据如下所示。
a b c
-------------------------------------------
1 x1 2014-4-1
....
100 x100 2014-4-1
....
1000 x1000 2014-4-1
....
Oracle 如何根据值确定相同订单的行顺序?
已添加
每次都是随机顺序吗?
它们不能是随机的(每次都改变),但不能保证顺序(有时会改变)。
一个简单的答案是否。 无法保证 等值 上的ORDER BY
每次都会return 相同的排序结果。在您看来它总是 stable,但是,它可能会发生变化的原因有很多。
例如,相等值的排序可能推迟到:
- 收集统计数据
- 在列上添加索引
例如,
假设我有一个 table t:
SQL> SELECT * FROM t ORDER BY b;
A B
---------- ----------
1 1
2 1
3 2
4 2
5 3
6 3
6 rows selected.
在具有相似值的列上排序就像:
SQL> CREATE TABLE t1 AS SELECT * FROM t ORDER BY b, DBMS_RANDOM.VALUE;
Table created.
SQL> SELECT * FROM t1 ORDER BY b;
A B
---------- ----------
1 1
2 1
4 2
3 2
5 3
6 3
6 rows selected.
因此,tables 中的相似数据,但是,ORDER BY
在具有相同值的列上,不保证相同的排序。
全部,假设 SQL 如下所示。
Select a, b ,c from table1 order by c
如果table1
中的所有行在字段c中具有相同的字段值。我想知道每次执行 SQL.
假设 table1
中的数据如下所示。
a b c
-------------------------------------------
1 x1 2014-4-1
....
100 x100 2014-4-1
....
1000 x1000 2014-4-1
....
Oracle 如何根据值确定相同订单的行顺序?
已添加
每次都是随机顺序吗?
它们不能是随机的(每次都改变),但不能保证顺序(有时会改变)。
一个简单的答案是否。 无法保证 等值 上的ORDER BY
每次都会return 相同的排序结果。在您看来它总是 stable,但是,它可能会发生变化的原因有很多。
例如,相等值的排序可能推迟到:
- 收集统计数据
- 在列上添加索引
例如,
假设我有一个 table t:
SQL> SELECT * FROM t ORDER BY b;
A B
---------- ----------
1 1
2 1
3 2
4 2
5 3
6 3
6 rows selected.
在具有相似值的列上排序就像:
SQL> CREATE TABLE t1 AS SELECT * FROM t ORDER BY b, DBMS_RANDOM.VALUE;
Table created.
SQL> SELECT * FROM t1 ORDER BY b;
A B
---------- ----------
1 1
2 1
4 2
3 2
5 3
6 3
6 rows selected.
因此,tables 中的相似数据,但是,ORDER BY
在具有相同值的列上,不保证相同的排序。