加入收藏 | 设为首页 | 会员中心 | 我要投稿 上饶站长网 (https://www.0793zz.com.cn/)- 数据库平台、视觉智能、智能搜索、决策智能、迁移!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

无序导致SQL

发布时间:2021-02-25 20:17:15 所属栏目:MsSql教程 来源:网络整理
导读:我一遍又一遍地读到它,SQL的核心是无序模型.这意味着多次执行相同的SQL查询可以以不同的顺序返回结果集,除非包含“order by”子句.有人可以解释为什么SQL查询可以在运行查询的不同实例中以不同的顺序返回结果集吗?情况可能并非总是如此,但肯定是可能的. 从算

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

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

注意:我没有质疑订单的使用,我问为什么没有保证,因为我正在试图理解由于无法保证所带来的挑战.

解决方法

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

>无序索引扫描可以在allocation order或按键顺序中执行,具体取决于有效的隔离级别.
> merry go round scanning功能允许在并发查询之间共享扫描.
>并行计划通常是非确定性的,结果顺序可能取决于运行时选择的并行度和服务器上的并发工作负载.
>如果计划具有嵌套循环,则使用无序预取此allows the inner side of the join to proceed using data from whichever I/Os happened to complete first

(编辑:上饶站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读