Es macht keinen Sinn ein TClientDataSet an dieser Stelle zu benutzen. Bei dem SaveToFile wird jedesmal die komplette Datenmenge in die
XML Datei geschrieben. Dass das nicht gerade schnell ist, sollte klar sein.
Das einzig sinnvolle ist eine Embedded Datenbank, ob nun SQLite, Firebird Embedded oder MS
SQL Embedded spielt dabei keine große Rolle. Da du ja (hoffentlich) nur von diesem einen Programm auf die Daten zugreifst, reicht eine Embedded Datenbank ohne echten Datenbankserver vollkommen aus.