Ich schreibe ein Importprogramm, das Telefonnummern als eindeutigen Schlüssel für den Import verwendet.
Ich muss prüfen, ob die Telefonnummer nicht bereits in meiner DB vorhanden ist. Das Problem ist, dass Telefonnummern in der DB Dinge wie Bindestriche und Klammern und möglicherweise andere Dinge enthalten können. Ich habe eine Funktion geschrieben, um diese Dinge zu entfernen, das Problem ist, dass sie langsam und bei Tausenden von Datensätzen in meiner DB und Tausenden von Datensätzen, die auf einmal importiert werden müssen, kann dieser Prozess unannehmbar langsam sein. Ich habe die Telefonnummernspalte bereits zu einem Index gemacht.
Ich habe versucht, das Skript aus diesem Beitrag zu verwenden:
T-SQL trim   (und andere nicht alphanumerische Zeichen)
Aber das hat die Sache nicht beschleunigt.
Gibt es einen schnelleren Weg, um nicht-numerische Zeichen zu entfernen? Etwas, das gut funktionieren kann, wenn 10.000 bis 100.000 Datensätze verglichen werden müssen.
Was auch immer getan wird, es muss funktionieren schnell .
Update
In Anbetracht der Antworten, die ich erhalten habe, werde ich wohl die Felder bereinigen müssen, bevor ich das Importprogramm ausführe.
Um die Frage zu beantworten, in was ich das Importprogramm schreibe, ist es eine C#-Anwendung. Ich vergleiche BIGINT zu BIGINT jetzt, ohne Notwendigkeit, DB-Daten zu ändern, und ich bin immer noch einen Performance-Hit mit einem sehr kleinen Satz von Daten (etwa 2000 Datensätze) nehmen.
Könnte der Vergleich von BIGINT mit BIGINT die Dinge verlangsamen?
Ich habe die Codeseite meiner App so weit wie möglich optimiert (Regexe entfernt, unnötige DB-Aufrufe entfernt). Obwohl ich nicht isolieren kann SQL als die Quelle des Problems mehr, ich fühle mich immer noch wie es ist.