Il rallentamento sta proprio nel fatto che tu fai un ciclo su tutta la tabella e quindi riempi in un unica volta l'albero.
Se i tuoi dati sono suddivisibili in sottosezioni (come penso che sia altrimenti a cosa serve l'albero?), potresti usare proprio queste sottosezioni. Mi spiego meglio:
All'avvio del form riempi l'albero solo con il primo livello di dati.
Es. se stai inserendo delle anagrafiche, il primo livello sara "Comune", quindi fai una
codice:
SELECT Comune FROM TABELLA GROUP BY Comune
Quando vai ad aprire un ramo (es. ROMA) carichi come "figli" del ramo ROMA i record Estratti con
codice:
SELECT Cognome FROM TABELLA WHERE Comune = 'ROMA' GROUP BY Cognome
e così via per tutti i livelli di dettaglio che vuoi aggiungere.
In questo modo l'apertura sara molto più veloce e dividi il tempo di attesa (comunque non troppo alto) man mano che esplori l'albero.
Spero di essere stao esauriente