gpt4 book ai didi

SQL SELECT... WHERE with REPLACE - 担心效率低下

转载 作者:行者123 更新时间:2023-12-04 22:52:40 27 4
gpt4 key购买 nike

在 SQL Server 2005 中,我有一个产品搜索,如下所示:

select ProductID, Name, Email 
from Product
where Name = @Name

我被要求忽略 Product.Name 中的几个“特殊”字符,因此搜索“Potatoes”会返回“Po-ta-toes”和“Potatoes”。我的第一个想法是这样做:
select ProductID, Name, Email 
from Product
where REPLACE(Name, '-', '') = @Name

...但转念一想,我想知道我是否通过对每个候选结果运行一个函数来降低性能。 SQL 是否有一些优化魔法可以帮助它快速完成这种事情?你能想到我可以根据我的要求尝试什么更简单的方法吗?

最佳答案

如果您愿意强制第一个字符为字母,您可能会获得更好的性能,就像这样......

select ProductID, Name, Email 
from Product
where REPLACE(Name, '-', '') = @Name
And Name Like Left(@Name, 1) + '%'

如果名称列被索引,您可能会得到索引查找而不是扫描。缺点是,您不会返回值为“-po-ta-to-es”的行,因为第一个字符不匹配。

关于SQL SELECT... WHERE with REPLACE - 担心效率低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2290652/

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