0

我想知道 SQL 查询中嵌套 REPLACE() 方法的性能:

SELECT * 
FROM CUSTOMERS 
WHERE Replace(Replace(Replace(Replace(username, '.MR', ''), ' MR', ''), '.', ''), ' ', '') LIKE '%" & nameOnForm & "%'

我基本上是在尝试从用户名中删除任何头衔(先生、夫人、博士),但我有一个大约 40 个可能需要删除的头衔的列表。据我所知,使用嵌套的 REPLACE() 方法是实现这一目标的唯一方法。

我的问题是,这对我的查询性能有何影响?我嵌套的越多,它会变得越大越慢吗?如果是这样,速度差异是可以忽略不计还是显着?

我总是可以运行一个基准测试来亲眼看到这一点,但我也想知道是否有更好的方法来做我想做的事情?

4

2 回答 2

1

一般REPLACE比 a 快TRANSLATE。但是在嵌套的情况下REPLACE,性能肯定会受到影响。重写它们并进行比较更安全。我也建议基于函数的 index

于 2013-11-08T14:15:00.673 回答
0

不只是嵌套的替换函数很慢。当表中有很多记录时,这种构造总是很慢。

where function(field) = something

对于您的特定问题,如果您想要速度,您必须硬着头皮做这样的事情:

where username like '%Mr.%'
or username like '%Mrs.%'
etc
于 2013-11-08T14:27:37.303 回答