ok ci sono riuscito il codice è questo

codice:
  While lettore.Read
            '   '  With lettore
            '
            With lst.Items.Add(lettore("CodArticolo") & "", 1)  '

                               .SubItems.Add(lettore("Descrizione") & "")
                
            End With
        End While
a caricare 10.000 articoli da un semplice ciclo for ci mette 2 secondi, peccato che usando un datareader il tempo è identico ad una comunissima listview,
quel che penso io è che per passare da un record ad un'altro ci mette un po di tempo(nonostante il datareader sia veloce) e cio implica sul tempo di caricamento della lista , quindi 20 secondi per 4.000 record