Ho guardato il codice velocemente, ma penso che il problema sia legato al fatto che esegui una query iniziale e poi per ogni elemento ne esegui un altra.
Questo significa che se la prima query ti trova 1000 soggetti vengono eseguite 1000 query, e questo è un problema.
Ti converrebbe caricare prima i numeri di telefono se non sono molti e poi ciclarli per trovare quelli con l'ID da visualizzare, in questo modo eseguiresti solo una volta la query tenendoti i risultati.