Das Laden von 5.000.000 Datensätzen wurde ja schon angesprochen und du hast es ja auch entsprechend umgesetzt.
Trotzdem will ich hier einmal die
VirtualTreeView Komponente in den Raum werfen, die für solch große Datenmengen ebenfalls gemacht ist.
Die Einarbeitung in die Komponenten mag zwar etwas schwierig sein, aber dafür profitiert man später von den Vorzügen umso mehr.
Einfach mal ausprobieren. Bei Fragen einfach hier (also in einem neuen Thread) posten.