Esto definiendo el campo number como Numerico(bigint).
El problema quizás que perderemos el cero del principio, salvo que pusiéramos zerofill.
Como dices que el Excel trae hasta mas o menos 50.000 números, yo prefiero cargar los números de excel a un arreglo, pues este quizás no siga creciendo pero la base muy probablemente si.
Luego por las dudas y para no saturar el servidor partiría la búsqueda en las consultas tu podrías elegir en cuantos ciclos realizas el traspaso.
Por ejemplo si el excel tiene 50.000 lineas y dices en 10 ciclos, entonces tomaría
el valor cero del array que tiene cargado el excel que es el numero mas chico y el valor 4.999 y limitaría la consulta a ese rango.
Quedaría mas o menos así:
Código PHP:
Ver original(SELECT number FROM tbl_blacklist WHERE number BETWEEN valorMin AND valorMax) UNION (SELECT number FROM tbl_cmdatabase WHERE number BETWEEN valorMin AND valorMax) ORDER BY number
// Bueno puedes poner >< que debera ir mas rapido.
y haces mas o menos lo mismo que estas haciendo, verificar que cada numero del excel no este en el arreglo de resultados y repites para los ciclos que elegiste.
No se si mejorara la performance pero es una idea.
Lo otro es con procedimientos almacenados en la propia base mysql.
Saludos y suerte