我有一个巨大的 innoDB 库存表,包含超过 4000 万条记录,这些记录使用 csv 文件(每次文件超过 100 万条数据)不断更新。我们使用Load Data Infile
将数据导入表的方法。
该表有一个名为 part_number 的字段,它是每个库存项目的唯一标识符。此字段中的数据包含一个或多个特殊字符,如'-'、'_'、'#'、'$'、"等。
例如。Abcd-1234
我们有一个工具供最终用户使用 part_number 作为关键字在此表上进行搜索。有三种类型的搜索 a) 完全匹配 b) 包含与 c) 开始于
我的要求是向用户显示带有特殊字符的结果,即使他们搜索时没有使用“-”、“_”、“#”、“$”、“”等字符。
例如。用户应该能够搜索 Abcd1234 并获得结果 Abcd-1234。用户应该能够搜索 Abcd-1234 并获得结果 Abcd1234 用户应该能够搜索 Abcd_1234 并获得结果 Abcd1234 和 Abcd-1234
注意:为了避免插入期间的表锁定和其他一些依赖项,我不得不将表保留为InnoDB
.
添加一个存储 part_number 省略标点符号的新列并向该字段运行搜索是我想到的解决方案,但它会影响数据导入过程,这是不可接受的。
我曾尝试过 REGEXP,但未能成功满足我的标准。我的标准如下 a) 用户可以使用或不使用特殊字符进行搜索 b) part_number 字段中的数据可能在任何地方包含也可能不包含特殊字符 c) 我们应该能够在任何情况下显示结果..
请让我知道是否有办法解决这个问题..