gpt4 book ai didi

MySQL:使用 Case 语句和 LIKE 的性能

转载 作者:行者123 更新时间:2023-11-29 22:45:36 26 4
gpt4 key购买 nike

有谁知道如何处理这样的情况

有 1000 万条记录,其中包含公司名称和地址,其中大部分是脏记录,需要清理。

开始使用带有 LIKE 和正则表达式的 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 命令来清理一些内容。

然后是一个 sub ,有一百行,例如如果 $str =~ m{McDonald's}i,则返回 q{MCDONALD'S};

然后——只有这样——将数据存储到数据库中。 (您可以选择原始形式 (McDonald's) 列和规范形式 (MCDONALD'S) 列。

关于MySQL:使用 Case 语句和 LIKE 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29158294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com