MySQL:使用Case语句的性能&;喜欢

MySQL:使用Case语句的性能&;喜欢,mysql,database-performance,data-cleaning,Mysql,Database Performance,Data Cleaning,有人知道如何应对这种情况吗 有1000万条记录,上面有公司名称和地址,其中大部分都是脏的,需要清理 开始使用LIKE&Regex的Case语句构建函数来查找模式,我面临的问题是MySQL的性能和速度非常慢 函数的作用如下:删除额外的空格、非字母数字字符,并使用LIKE(几乎有100个模式)标准化名称,我知道这将非常缓慢,但不确定我还可以尝试其他选项 我正在考虑这样的选项,比如将所有这些关键字保存到一个表中,并使用相应的更正值,然后使用该表作为查找来替换关键字,使用函数是否有效 punctuati

有人知道如何应对这种情况吗

有1000万条记录,上面有公司名称和地址,其中大部分都是脏的,需要清理

开始使用LIKE&Regex的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个像上面语句一样的关键字


-谢谢

数据清理最好使用更完整的编程语言,而不是SQL。在过去的生活中,我发现Perl非常优秀

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

然后是一个包含100行的
sub
,如
如果$str=~m{MCDONALD'S}i,则返回q{MCDONALD'S}


然后——只有在那时——将数据存储到数据库中。(您可以选择一列作为原件(麦当劳)和一列作为标准格式(麦当劳).

问题太模糊了。它太慢了,因为它是一个完整的扫描。感谢Zerkms…数据就是这样。有没有更好的替代方案的建议。我看到过这样的资源,但它有帮助吗?问题太模糊了。你没有提供任何详细信息,因此不可能提供任何有意义的建议。你应该提供你是我们的查询ing.毫无疑问的绩效问题,应该说,相当理论化。