【问题标题】:SQL Top Function with a clustered index具有聚集索引的 SQL 顶级函数
【发布时间】:2020-04-13 08:15:16
【问题描述】:

除非我使用order by 子句,否则并不总是保证记录的顺序。

如果我在一个表上抛出一个聚集索引,然后执行select top 100,例如,返回的 100 行是否总是相同的?

我之所以这么问,是因为聚集索引会根据键值对数据进行物理排序。

根据我的观察,我被引导相信这一点,但想看看其他人的想法。

【问题讨论】:

标签: tsql


【解决方案1】:

没有。规则很简单:SQL 表和结果集代表 无序 集。唯一的例外是与最外层 SELECT 中具有 ORDER BY 的查询关联的结果集。

聚集索引会影响数据在每个页面上的存储方式。但是,它不保证基于该表构建的结果集甚至会使用聚集索引。

考虑一个表,该表在id 上有一个主聚集键和一个返回的查询:

select top (100) othercol
from t;

此查询可以使用othercol 上的索引——完全避免使用聚集索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-04
    • 2021-09-07
    • 2017-04-01
    • 2018-05-08
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    相关资源
    最近更新 更多