ADO Feld-Abfragen Optimierung
Geschrieben von: Christian Koller Viele Datenbankapplikationen, auch unter ASP, öffnen ein ADO Recordset, um dann auf einzelne Felder oder Feldwerte des Recordsets zuzugreifen. Wenn man das ganze Recordset in einer Schleife durchläuft, so wird oft ein Skript wie folgt benutzt (rs steht dabei für ein geöffnetes Recordset Objekt mit Daten): ... While Not rs.EOF strName = rs("Name").Value strAdresse = rs("Adresse").Value strGebDat = rs("Geburtsdatum").Value ... rs.MoveNext Wend ... Analysieren wir kurz die Schleife: Während jedes Schleifendurchlaufs wird auf drei Felder (Name, Adresse, Geburtsdatum) zugegriffen. Dabei muß Visual Basic (oder VBScript) in jedem Durchlauf erst anhand des Feldnames ermitteln, welches Feld im Recordset nun gemeint ist. Das heißt, der Feldname wird gelesen, das zugehörige Feld im Recordset gesucht, und eine Referenz auf das Feld zurückgegeben. Dann wird mit Hilfe dieser Feldreferenz der Wert des Feldes (Value Eigenschaft, zugleich die Default Eigenschaft) ermittelt, sodaß dieser Wert zur Verarbeitung durch das Skript bereitsteht. Wenn das Recordset nun sehr groß ist, so wird viel Rechenzeit damit vergeudet in jeder Schleife wieder die Feldreferenz anhand des Namens zu ermitteln. Ökonomischer und damit schneller ist es, die Feldreferenz nur einmal zu ermitteln und dann in jeder Schleife immer wieder diese Referenz zur Ermittlung des Feldwertes des jeweiligen Datensatzes (Record) heranzuziehen. Genau das tut das folgende Skript, es speichert die Referenz zu den Feldern in 3 Variablen (fldName, fldAdresse, fldGeburtsdatum) um dann diese gespeicherten Referenzen in jedem Durchlauf der While...Wend Schleife heranzuziehen: ... Set fldName = rs("Name") Set fldAdresse = rs("Adresse") Set fldGeburtsdatum = rs("Geburtsdatum") While Not rs.EOF strName = fldName.Value strAdresse = fldAdresse.Value fldGeburtsdatum = fldGebDat.Value ... rs.MoveNext Wend ... Dies bringt pro Durchlauf etwa eine Performancesteigerung von 20% (gemessen mit der gratis erhältlichen Profiling Komponente von AlphaSierraPapa). Weiteres über Performance Steigerung im Zusammenhang mit Datenbankabfragen mittels ADO oder dem Recordset Objekt in Kürze bei ASPHeute.com in der Kategorie Datenbank. Verwandte Artikel
Benutzerverwaltung leicht gemacht: Teil 1 Links zu anderen SitesWenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |