gpt4 book ai didi

sql-server - 为什么Len函数可以使用索引?

转载 作者:行者123 更新时间:2023-12-03 02:29:56 25 4
gpt4 key购买 nike

我有一个包含 145000 行的表。并且没有任何索引。

当我在sql下面运行时。我发现执行计划上有预期的表扫描。它生成六行和 3481 逻辑读取。

SET STATISTICS IO ON
SELECT columnA FROM table WHERE LEN(columnA)<>5

然后我在columnA上添加聚集索引并运行sql。我在执行计划上发现了聚集索引扫描。它生成六行和 3511 个逻辑读取。我能理解B树节点读取的更大逻辑读取。

但令我困惑的是,我在columnA上使用非聚集索引而不是聚集索引并运行sql。我在执行计划上发现了索引扫描。它生成六行,只需要 417 次逻辑读取!。

我不认为 len() 函数可以利用索引的优势。但是为什么columnA上的非聚集索引使得逻辑读取更少(9次)?

最佳答案

LEN 函数无法“使用”索引,但是仅包含此列的索引将占用更少的空间,整体而言,比基表更重要。因此扫描该索引比扫描基表效率更高。

扫描基表将加载表中的所有其他列,即使不需要它们来满足查询。

关于sql-server - 为什么Len函数可以使用索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29817896/

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