Estoy escribiendo una utilidad de importación que utiliza números de teléfono como clave única dentro de la importación.La forma más rápida de eliminar caracteres no numéricos de un VARCHAR en SQL Server
Necesito comprobar que el número de teléfono aún no existe en mi base de datos. El problema es que los números de teléfono en la base de datos pueden tener elementos como guiones y paréntesis y posiblemente otras cosas. Escribí una función para eliminar estas cosas, el problema es que es lento y con miles de registros en mi base de datos y miles de registros para importar a la vez, este proceso puede ser inaceptablemente lento. Ya he hecho que la columna del número de teléfono sea un índice.
He intentado utilizar el guión de este post:
T-SQL trim   (and other non-alphanumeric characters)
Pero eso no acelerarlo ninguna.
¿Hay una forma más rápida de eliminar caracteres no numéricos? Algo que puede funcionar bien cuando se tienen que comparar 10,000 a 100,000 registros.
Lo que se necesita hacer para realizar rápido.
actualización
Teniendo en cuenta lo que la gente respondió con, creo que voy a tener que limpiar los campos antes de correr la utilidad de importación.
Para responder la pregunta de en qué estoy escribiendo la utilidad de importación, se trata de una aplicación C#. Estoy comparando BIGINT con BIGINT ahora, sin necesidad de alterar los datos de la base de datos y todavía estoy teniendo un golpe de rendimiento con un conjunto muy pequeño de datos (alrededor de 2000 registros).
¿Podría la comparación de BIGINT a BIGINT ralentizar las cosas?
He optimizado el lado del código de mi aplicación tanto como puedo (quité expresiones regulares, eliminé las innecesarias llamadas al DB). Aunque ya no puedo aislar SQL como la fuente del problema, todavía me siento como si lo fuera.
se le olvidó() - # – JiggsJedi
etc. * CAST (1 AS bigint) –