SQL中的无序结果

我一遍又一遍地读到,SQL本质上是一个无序的模型。这意味着多次执行相同的SQL查询可以按不同的顺序返回结果集,除非其中包括“ order by”子句。有人可以解释为什么SQL查询在运行查询的不同实例中以不同顺序返回结果集吗?并非总是如此,但肯定是可能的。

从算法上讲,当没有“ order by”子句时,查询计划在确定结果集的顺序中不起作用吗?我的意思是,当为某个查询制定查询计划时,该算法如何不总是以相同的顺序返回数据?

注意:不是在质疑订单的使用,而是在询问为什么没有担保,例如,我试图理解由于无法提供任何保证而引起的挑战。

马丁·史密斯

某些完全相同的执行计划可以返回不同顺序结果的SQL Server示例

  1. 根据有效的隔离级别,可以按分配顺序或键顺序执行无序索引扫描
  2. 欢快的去圆扫描功能允许并发查询之间的共享扫描。
  3. 并行计划通常是不确定的,结果的顺序可能取决于运行时选择的并行度和服务器上的并发工作负载。
  4. 如果计划中包含具有无序预取的嵌套循环,则这将允许联接的内侧继续使用碰巧先完成的I / O中的数据

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

sql无序输出(结果)

来自分类Dev

从sql表中删除无序重复项

来自分类Dev

LIKE子句T-SQL中的无序单词匹配

来自分类Dev

XML无序集合中的SQL Oracle Extrac值

来自分类Dev

Rownum导致结果以无序方式显示结果

来自分类Dev

SQL Server:行无序

来自分类Dev

BroadcastReceiver尝试在无序广播期间返回结果-Android中的PACKAGE_ADDED

来自分类Dev

如何按字母显示MySQL结果在单独的无序列表中

来自分类Dev

SQL Oracle,选择不同的无序对

来自分类Dev

SQL中逗号分隔的结果

来自分类Dev

获取SQL结果中的行号

来自分类Dev

SQL查询结果中的双列

来自分类Dev

SQL结果中的分层编号

来自分类Dev

SQL查询中的不良结果

来自分类Dev

SQL中的多个结果处理

来自分类Dev

在Java中遍历SQL结果

来自分类Dev

SQL Server中的透视结果

来自分类Dev

获取SQL结果中的行号

来自分类Dev

SQL查询结果中的错误

来自分类Dev

在Java中遍历SQL结果

来自分类Dev

SQL结果中的分层编号

来自分类Dev

无序集合-Python中的集合

来自分类Dev

查找数组中无序对的数量

来自分类Dev

在Java中存储无序对的列表

来自分类Dev

在Jinja中无序访问列表

来自分类Dev

在 Rust 中获得“无序”语义

来自分类Dev

从 SQL 中的表中删除结果行

来自分类Dev

SQL:如何获取无序列的最新值

来自分类Dev

BroadcastReceiver试图在无序广播期间返回结果怪异错误