在数据库查询中使用replace或regex

时间:2015-08-30 08:09:40

标签: c# regex performance linq

简而言之,我正在阅读C#5,所以我提出了一个问题:
假设我们在数据库中有一个包含多行的表,每行都是一个字符串字段,现在我想从字段中删除所有元音。所以我们可以这样写:

var query = names
    .Select (n => n.Replace ("a", "").Replace ("e", "").Replace ("i", "")
            .Replace ("o", "").Replace ("u", ""))
    .Where (n => n.Length > 2)
    .OrderBy (n => n);

正如您可以看到.Replace方法调用五次,因此我们可以轻松地使用正则表达式而不是字符串替换:

n => Regex.Replace (n, "[aeiou]", "")

这本书建议在数据库查询中最好使用字符串的替换而不是正则表达式的替换。
我的问题是它如何分化?哪一个效率更高?

1 个答案:

答案 0 :(得分:0)

为什么书籍说避免RegEx

是因为 RegEx比其他内置比较函数慢

并且认为当您使用RegEx处理数千条记录时,时间复杂度会是多少。

以及内置比较函数的时间复杂度。