gpt4 book ai didi

sql-server - 为什么 SQL Server 比非聚集 + 键查找更喜欢聚集索引扫描?

转载 作者:行者123 更新时间:2023-12-02 08:40:14 24 4
gpt4 key购买 nike

下面是查询和执行计划。被注释的 create-index 语句已经被执行。 enter image description here

为什么Sql-Server决定执行聚集索引扫描?我错过了什么吗?

最佳答案

如果查询要使用索引,则必须搜索索引页(至少 2 页),从结果中获取聚簇索引键,然后通过聚簇索引搜索每个键 (每个找到的记录至少读取 2 页)以获取索引未涵盖的其余记录。

可以是一种有效的方法,如果您有大量记录并且您的 where 子句仅选择其中的相对较小的子集(查询优化器估计基于指数统计)。

从表面上看,表中只有少量记录,也许它们甚至可以放在一页上,所以优化器说“我可以通过读取和过滤表中的一两页来完成整个查询聚集索引一次,在这种情况下,这比整个非聚集索引业务更有效,所以我会这样做,让我那可怜的重载服务器引擎免去一大堆麻烦”:-)

编辑:尝试在 WHERE 子句之前指定 WITH (INDEX(idx_WP_Discrepancy_FilterColumns2)) 并将查询计划中的估计子树成本与原始查询进行比较以查看差异。

关于sql-server - 为什么 SQL Server 比非聚集 + 键查找更喜欢聚集索引扫描?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17193531/

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