gpt4 book ai didi

SQL 使用字符串函数提高索引列性能

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

我有一个关于使用字符串函数及其对性能的影响的一般性问题。我有一个表,其列 ID 上有非聚集索引。该列中有 20 位 varchar。当我运行时:

SELECT col1, col2 
FROM tbl
WHERE ID = '00000000009123548754'

结果返回得非常快。但是当我运行时

SELECT col1, col2 
FROM tbl
WHERE RIGHT(ID, 10) = '9123548754'

这需要很长时间。第一个查询的估计执行计划有一个索引查找,而第二个查询的估计执行计划有一个索引扫描。

我知道Seek相对于Scan是更快的原因,但是为什么String Function Right()有这样的影响?

最佳答案

存在差异的原因是因为必须解析每一行的 RIGHT(ID,10) 才能对其进行过滤(因此进行扫描),而 ID = '00000000009123548754'子句可以解析为简单的查找。

用技术术语来说,您的第一个查询是 sargable ,而第二个不是(由于功能)。

关于SQL 使用字符串函数提高索引列性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41454376/

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