MySQL:带有案例陈述的表现&喜欢

时间:2015-03-20 02:18:22

标签: mysql database-performance data-cleansing

有没有人知道如何处理这种情况

获得了10M的商业名称记录和其中大部分都是脏的并且要清理的地址。

使用带有LIKE&amp ;;的Case语句开始构建函数正则表达式找到模式,我面临的问题是MySQL性能和它非常慢。

函数确实如下:删除多余的空格,非字母数字字符,并使用LIKE标准化名称(几乎有100个模式),我知道它会很慢,但不知道我会尝试哪些其他选项

我正在考虑选择将所有这些关键字保存到具有相应更正值的表中,并使用该表作为查找以使用函数替换关键字是否有效?

punctuation (could use REPLACE; not sure it there are more efficient options)
abbreviations (this is the tough one -- street = st, etc.)
Company/Restaurant/other Names standardizing: Like 
Universities to Univ, CENTER to CTR, AND to &, 
case 
when Businnes_name like '%SUBWAY%' then 'SUBWAY'
when Businnes_name like '%MCDONALDS%' then 'MCDONALD''S'
when Businnes_name like '%MCDONALD''S%' then 'MCDONALD''S'
when Businnes_name like '%STARBUCKS%' then 'STARBUCKS'
when Businnes_name like '%DUNKIN%DONUTS%' then 'DUNKIN'' DONUTS'
when Businnes_name like '%BURGER%KING%' then 'BURGER KING'

我在函数中总共有100个关键字,如上述语句

-Thanks

1 个答案:

答案 0 :(得分:0)

数据清理最好采用更全面的编程语言,而不是SQL。在过去的生活中,我发现Perl很棒。

首先用几个s{}{}g命令来清理一些东西。

然后是sub,有一百行像 return q{MCDONALD'S} if $str =~ m{McDonald's}i;

然后 - 只有 - 将数据存储到数据库中。 (您可以选择为原始列(麦当劳)和专栏形式的列(MCDONALD' S)添加一列。