Letztens habe ich bei der Arbeit etwas entdeckt. Bei den DataSets hat man die Möglichkeit die Tabellen nach einem gewissen Kriterium zu filtern. Im Code hatte jemand ständig die Filter eingesetzt.

Ein Beispiel:
Im einem DataSet gibt es eine Tabelle “mitarbeiter”. Diese Tabelle soll gefiltert werden und zwar so, dass nur die männlichen Mitarbeiter erschienen.

Dann wurde folgendermassen vorgegangen:

pic1

Da es sich hier lediglich um ein Beispiel handelt, wurden die Insert-Statements ausgelassen. Im richtigen Code, sah das ganze etwas anders aus.
Jedenfalls habe ich bemerkt, dass bei grossen Datenmengen, diese Methode der Filterung die Performance enorm vermindert. Die permanente Konvertierung der Daten, in ein DataView und danach wieder zu einem DataTable verbraucht viel Ressourcen. An der richtigen Codestelle wurde das ganze in einer Schleife durchgeführt.

Meine Aufgabe war es, den Code zu analysieren und die Performance zu verbessern. Als ich dann dieses Verhalten bemerkt hatte, baute ich die Methodik um und verwendete für die Filtrierung, die Select Methode des DataTables. Und siehe da!!! ich konnte einen Prozess, der ca. 7 Minuten dauerte, auf eine Minute minimieren. Dies war ein grosses Erfolgserlebnis für mich und ausserdem machte ich auch noch die Erfahrung, dass man die AsDataView() und die ToTable() Methoden bei grösseren Datenmengen vermeiden sollte.