【发布时间】:2020-04-13 08:15:16
【问题描述】:
除非我使用order by 子句,否则并不总是保证记录的顺序。
如果我在一个表上抛出一个聚集索引,然后执行select top 100,例如,返回的 100 行是否总是相同的?
我之所以这么问,是因为聚集索引会根据键值对数据进行物理排序。
根据我的观察,我被引导相信这一点,但想看看其他人的想法。
【问题讨论】:
-
不,不能保证。简单场景:并行执行
-
聚集索引导致存储的页面是有序的;这并不意味着当数据引擎读取这些页面并从中返回数据时,它们的顺序是相同的。
-
还有一个,里面有更多文章的链接:The “Natural order” misconception。
标签: tsql