无序导致SQL

前端之家收集整理的这篇文章主要介绍了无序导致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

猜你在找的MsSQL相关文章