【发布时间】:2015-11-05 17:51:25
【问题描述】:
我有一个现有的公司表,其中包含由第 3 方提供的唯一 ID。该表在去年变得非常大(超过 100,000 家公司),我们在从提供的数据文件中导入更多公司时遇到了问题。
每个公司 ID 最多 9 个字符。问题是有时它们会添加前导零,有时则不会。所以 00321390 和 321390 是一样的。
当我们要导入一个新的数据集时,我们会寻找具有以下内容的现有公司:
WHERE TRIM(LEADING '0' FROM co_grp) = TRIM(LEADING '0' FROM import_grp)
company 表中的 co_grp 是唯一索引的。 临时导入表中的 import_grp 索引正常(导入文件中可能存在重复项,这些重复项在我们的导入查询中的其他地方处理。
问题在于在此步骤上运行此导入需要大量时间。我考虑过添加一列并进行复制,这样一列没有前导零,另一列有两个前导零,但这听起来不是处理这个问题的正确方法。
有什么更好的方法来解决这个问题?我不想进行大规模更新并删除或添加前导零,因为访问该系统的公司喜欢前导零,因此他们知道它是来自导入的文件还是(没有前导零)来自另一个来源。现在在没有对后端进行大量其他更改的情况下更改它为时已晚。
【问题讨论】:
-
我真的认为你应该规范化你的数据并为“源”添加列,如果这是需要的话。我将把它留在这里:xkcd.com/1172
标签: mysql