我想知道SQL查询中嵌套的REPLACE()方法的性能:
SELECT *
FROM CUSTOMERS
WHERE Replace(Replace(Replace(Replace(username, '.MR', ''), ' MR', ''), '.', ''), ' ', '') LIKE '%" & nameOnForm & "%'我基本上是在尝试从用户名中剥离任何头衔(先生、夫人、博士),但我有大约40个可能的头衔需要剥离的列表。据我所知,使用嵌套的REPLACE()方法是实现此目的的唯一方法。
我的问题是,这对我的查询性能有何影响?我嵌套越多,它是不是变得越笨重、越慢?如果是这样的话,速度上的差异是可以忽略不计的还是显着的?
我可以自己运行一个基准测试来查看这一点,但我也想知道是否有更好的方法来做我想要做的事情?
发布于 2013-11-08 22:15:01
一般来说,REPLACE比TRANSLATE更快。但在使用嵌套REPLACE的情况下,性能肯定会受到影响。重写它们并进行比较会更安全。另外,我建议使用基于索引的函数。
发布于 2013-11-08 22:27:37
不仅仅是嵌套的replace函数很慢。当表中有很多记录时,这种构造总是很慢。
where function(field) = something对于你的特定问题,如果你想要速度,你必须咬紧牙关,这样做:
where username like '%Mr.%'
or username like '%Mrs.%'
etchttps://stackoverflow.com/questions/19861000
复制相似问题