gpt4 book ai didi

sql-server - 使用复合聚集索引时,SQL Server 会跳叶吗?

转载 作者:行者123 更新时间:2023-12-01 11:09:27 26 4
gpt4 key购买 nike

考虑以下复合聚集索引:

CREATE UNIQUE CLUSTERED INDEX ix_mytable ON mytable(a, b)

显然,b 上的单独索引将使搜索 b 的特定值更快。

但是,如果 b 上的单独索引是 不是 使用,在我看来,复合索引仍然可以用于查找具有特定 b 值的元组,而不是表扫描,通过遍历 a 的离散值树并进行 b 的本地搜索,跳转到下一个a 的值等。

这是 SQL Server 的工作方式吗? (例如,如果 MSSQL 对具有多个列的索引使用单个哈希值,则不会。)

确实如此,并且由于其他原因已经需要复合索引,并且 a 的离散值的数量足够小,性能/空间权衡可能会偏离为 b 设置单独的索引。

(上面的 UNIQUE 和 CLUSTERED 约束在这个例子中并不是真正需要的,但它们代表了 b 的最快检索,不涉及 b 的单独索引——前者为 a 的每个循环提供了一个快捷方式,后者删除查找中的一级间接)。

最佳答案

不,没有跳过一组“a”。只有指定了最左边的列才能使用索引,否则需要使用全扫描。

Oracle 有所谓的 'Index Skip Scan'运算符(operator)。

关于sql-server - 使用复合聚集索引时,SQL Server 会跳叶吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1615893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com