一尘不染

数据库服务器如何确定在没有任何“ by-by”语句的情况下返回行的顺序?

sql

有点古怪的问题,总是我一直想知道的事情,而且我想知道为什么它会执行它可能会加深我的理解。

假设我执行“ SELECT TOP 10 * FROM
TableName”。在较短的时间范围内,同样的10行会返回,因此似乎不是随机的。它们不是第一个或最后一个创建的。在我一张表的大量样本中,它没有返回最小或最大自动递增主键值。

我还认为,考虑联接时,问题会变得更加复杂。

我选择的数据库是MSSQL,但我认为无论使用哪种平台,这都可能是一个有趣的问题。


阅读 110

收藏
2021-05-16

共1个答案

一尘不染

如果不对SELECT语句提供ORDER BY子句,则将以任意顺序返回行。

实际顺序是不确定的,并且取决于已在内存中缓存了哪些块/记录,以什么顺序执行I / O,何时计划运行数据库服务器中的线程等等。

订单没有任何押韵或理由,除非提供ORDER BY,否则切勿对行的顺序有任何期望。

2021-05-16