Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

ADO Feld-Abfragen Optimierung

Geschrieben von: Christian Koller
Kategorie: Optimierung

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
Highspeed-Abfragen einer SQL Server Datenbank

Links zu anderen Sites

Profiling Komponente

Wenn 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.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.