Hi
eine Möglichkeit wäre die Eigenschaft autoprepared im OI auf true zu setzen, bzw.
die vorbereitenden Arbeiten ausserhalb der Funktion anzusiedeln.
Sparst Dir halt ein 1000 if-Vergleiche.
Auch einer der Close-Aufrufe ist überflüssig.
Darüberhinaus könnte man auch noch über eine stored procedure nachdenken.
Hab mal gelesen, daß die noch ein tick schneller sind.
Bei bei komplexeren Abfragen kann ich mir das sehr gut vorstellen, da sicher jede Datenbank da ihre eigenen Optimierungen hat.
/edit Inzwischen nachgelesen...Vorteile von Stored prodedure sind vor allem Syntaxcheck fällt flach und das Statement liegt dann bei den meisten Datenbanken breits in kompilierter Form vor...also wenn Du die vorbereitenden Arbeiten auslagerst, müßte das fast dem prepared entsprechen...bzw. nur geringe Vorteile haben...käme natürlich drauf an, wie oft die Funktion während des Lebenszyklus des Programms aufgerufen wird, für nur einmal wärs mir wurscht.
Netzwerk-Traffic geht auch noch runter...meistens
In einer Multi-User-Umgebung mit komplexen Abfragen lohnt es sich auf jeden Fall.
Nachteil von stored procedures ansich keine, ausser, dass wenn die Abfragen Berechnungen ausführen, die andernfalls client-seitig ausgeführt würden...kann das den DB-Server in die Knie zwingen.
Naja und vielleicht ein wenig mehr Aufwand für den Programmierer.
/end edit
Ob es hier was bringt kann ich nicht beurteilen, da ich mit stored procedures noch nie gearbeitet habe.
Aber Versuch macht schließlich kluch
Kannst ja mal schreiben, welche Geschwindigkeitsvorteile du erzielt hast, würd mich mal interessiern.
/edit
Wenn ADO sowas wie ein MEMDatSet unterstützt, könnte das auch noch Vorteile bei Massen-Verarbeitung bringen....einmal alle Daten reinschlürfen...im Speicher bearbeiten und beim zurückschreiben fängt son MemDataset glaub ich an zu streamen, also blockweise zu schreiben, ist natürlich auch gefährlicher...wär mir die Arbeit nicht wert, daß Ganze abzusichern, aber kommt hier halt auf die Anwendung an.
Gruß
Aga