SQL:嵌套的replace()方法是否缓慢?

时间:2013-11-08 14:08:53

标签: sql

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

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

我基本上试图从用户名中删除任何标题(先生,夫人,博士),但我列出了大约40种可能需要删除的标题。据我所知,使用嵌套的REPLACE()方法是实现此目的的唯一方法。

我的问题是,这对我的查询的效果有何影响?我窝的越多,它变得越来越笨重吗?如果是这样,速度差异是否可忽略不计或显着?

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

2 个答案:

答案 0 :(得分:1)

通常REPLACETRANSLATE快。但是在嵌套REPLACE的情况下,性能肯定会受到打击。更加安全地重写它们并进行比较。我还建议基于函数的索引

答案 1 :(得分:0)

这不仅仅是嵌套的替换函数很慢。当表中有大量记录时,这种结构总是很慢。

where function(field) = something

对于你的特殊问题,如果你想要速度,你必须咬紧牙关并做这样的事情:

where username like '%Mr.%'
or username like '%Mrs.%'
etc
相关问题