我正在编写一个导入实用程序,它使用电话号码作为导入中的唯一键。
我需要检查我的数据库中是否不存在该电话号码。问题是数据库中的电话号码可能有破折号和括号之类的东西,可能还有其他东西。我写了一个函数来删除这些东西,问题是它很慢,我的数据库中有数千条记录并且一次导入数千条记录,这个过程可能会慢得令人无法接受。我已经将电话号码列设为索引。
我尝试使用这篇文章中的脚本:
T-SQL trim (and other non-alphanumeric characters)
但这并没有加快速度。
有没有更快的方法来删除非数字字符?当必须比较 10,000 到 100,000 条记录时可以表现良好的东西。
无论做什么都需要快速执行。
更新
鉴于人们的反应,我认为我必须在运行导入实用程序之前清理字段。
为了回答我正在编写导入实用程序的问题,它是一个 C# 应用程序。我现在正在将 BIGINT 与 BIGINT 进行比较,无需更改数据库数据,而且我仍在使用非常小的数据集(大约 2000 条记录)对性能造成影响。
将 BIGINT 与 BIGINT 进行比较会减慢速度吗?
我已经尽可能地优化了我的应用程序的代码端(删除了正则表达式,删除了不必要的数据库调用)。虽然我不能再将 SQL 隔离为问题的根源,但我仍然觉得它是。