也许有人可以向我解释这一点,但是当从Oracle查询数据表时,如果存在密钥的多个记录(例如客户ID),那么首先为该客户显示的记录可能会有所不同,如果没有隐含的“order by”通过说一个备用字段(如事务类型)执行该命令的语句.所以在同一个表上运行相同的查询可能会产生不同于10分钟前的记录排序.
例如,一次运行可以产生:
Cust_ID,Transaction_Type
123 A
123 B
除非使用“按Transaction_Type命令”子句,否则Oracle下次运行查询时可以随意返回以下结果:
Cust_ID,Transaction_Type
123 B
123 A
我想我的印象是Oracle中存在数据库缺省排序,这可能反映了磁盘介质上的物理顺序.换句话说,任意顺序是不可变的,并且将在重新运行查询时保证相同的结果.
这是否与优化器有关,以及它如何决定哪里最有效地检索数据?
当然,从编程的角度来看,最好的做法是强制需要排序,我只是有点不明白这一点.