La forma más rápida de eliminar caracteres no numéricos de un VARCHAR en SQL Server

Estoy escribiendo una utilidad de importación que utiliza números de teléfono como una clave única dentro de la importación.

Necesito verificar que el número de teléfono no exista en mi base de datos. El problema es que los números de teléfono en la base de datos podrían tener cosas como guiones y paréntesis y posiblemente otras cosas. Escribí una función para eliminar estas cosas, el problema es que eslento 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 un índice de la columna de número de teléfono.

Intenté usar el script de este post:
T-SQL trim & nbsp (y otros caracteres no alfanuméricos)

Pero eso no lo aceleró.

¿Hay una manera más rápida de eliminar caracteres no numéricos? Algo que puede funcionar bien cuando hay que comparar entre 10.000 y 100.000 registros.

Lo que se haga necesita ser realizado.rápido.

Actualizar
Dado lo que la gente respondió, creo que tendré que limpiar los campos antes de ejecutar la utilidad de importación.

Para responder a la pregunta de en qué estoy escribiendo la utilidad de importación, es una aplicación de C #. Estoy comparando BIGINT con BIGINT ahora, sin necesidad de alterar los datos de la base de datos, y sigo teniendo un impacto en el rendimiento con un conjunto muy pequeño de datos (aproximadamente 2000 registros).

¿Podría compararse BIGINT con BIGINT ralentizar las cosas?

He optimizado el lado del código de mi aplicación tanto como puedo (eliminé las expresiones regulares, eliminé las llamadas innecesarias de DB). Aunque ya no puedo aislar a SQL como la fuente del problema, todavía siento que lo es.

Respuestas a la pregunta(15)

Su respuesta a la pregunta