Cita: No se si necesita mucha explicación el código
No necesita explicación, pero te recomiendo leer las Reglas del foro de Bases de DAtos: No se postean códigos, ni se4 tratan temas de programación en este foro. Sólo SQL.
DE todos modos, ya se vislumra una aprte del problema: Estás haciendo basicamente un full tablescan para sólo bucar una cantidada acotada de telefonos, lo que es absurdamente ineficiente.
Primero, un full tablescan es un espanto de consulta. Es el error que hace colapsar cualquier servidor de BBDD, sin importar mucho lo poderoso que sea.
No se hacen.
Además, si ya tienes una lista acotada de numeros, lo que debes hacer es buscar en la base esa lista de números, y no traer todos los números posibles menos el del consultante.
En esencia, lo que te conviene es:
1) tener debidamente indexada la tabla por numero de telefono.
2) pasar como parámetros los numeros de la lista obtenida. De hecho si puedes en ese mismo momento excluir el del usuario consultante, mejor, asi te evitas pasar basura.
Quedaría mas o menos así:
Código SQL:
Ver originalSELECT *
FROM usuarios
WHERE telefono IN('11111111', '2222222222', 3333333333', ...) #Aca la lista de telefonos a buscar
ORDER BY USER
Te en cuenta que es un error de diseño de sistema hacer consultas iterativas (una a la vez), para obtener N registros, cuando la base peude devolverte el conjunto entero en una sola.