Tobi: Performance von Datenbankabfrage

Beitrag lesen

Hallo Frank,

scheinbar sind wir beiden die einzigen, die sich hier im Forum noch fuer Datenbankabfragen mit ASP interessieren. Und wie du merkst, bin ich sehr lernwillig....;o)

* ruft ja alle Felder auf, wenn du nicht alle Felder brauchst, dann trag dort nur die gewünschten ein -> Performancegewinn, weil ja nicht soviele Felder im Recordset gespeichert werden müssen

Jep, so hab ich mir das gedacht....

  1. Welcher Verbindugnstyp sollte gewaehlt werden? (DNS, DNS-less, ADODB etc.)

ADODB ist kein Verbindungstyp sondern die Komponente zum Zugreifen ... ActiveX Data Objects.

DSN / DSN-less ist auch nicht so treffend ... wobei ich immer DSN-less vorziehen würde

du mußt dich zwischen OLEDB Engine (soweit verfügbar - bei Access natürlich) und ODBC layer (der aber evt. auch wieder die JET OleDB Engine benutzt) entscheiden. OleDB ist besser, da man diesen ODBC layer nicht dazwischenschalten muß

Hmmm...ja Verbindugnstyp war der falsche ausdruck dafuer, aber ich sehe Du hast verstanden was ich meine.
Ich benutze momentan DSN-less Connection und als Provider (das meinte ich natuerlich) OLEDB (jet 4.0)...das scheint also mit deiner empfehlung uebereinzustimmen.

  1. Wirkt sich ein setzen von Parametern (z.B. Cursorlocation=adopenstatic, Locktype=adlockreadonly etc.) positiv aufs Performance aus?

ja, ziemlich ...

wenn du nur lesen willst, recordset abrasseln und in HTML darstellen dann
adOpenForwardOnly
adLockReadOnly

wenn du Daten einfach modifizen willst, nimm connection.execute mit dem Update/Insert SQL und stelle einen Parameter auf "keine Recordsetrückgabe" (keine Ahnung wie der grad heißt)

wenn du multiple Datensatzänderungen machen willst, mehrere geöffnete Recordsets gleichzeitig, dann mußt du entscheiden, ob adOpenStatic (erzeugt einen statischen Snapshot von der DB mit deiner SQL Abfrage) oder adOpenDynamic/adOpenKeyset (erzeugen immer noch von DB seite veränderliche Recordsets (falls jemand anders grad updatet)) nehmen willst. adOpenDynamic und -keyset sind performanceintensiver

Das war wieder sehr interessant fuer mich, leider findet man ueber ADO-Constants nur sehr wenig (auch mit google - ausser das sie existieren). Wie machst Du das eigentlich, bindest Du die kompletten ADO Konstanten als inc file ein oder nur ausgesuchte oder setzt du nur die Zahlenwerte?

  1. Welcher Abfragetyp sollte gewaehlt werden? (recordset, getrows oder stored procedures)

Wie ich ja neulich gelernt habe *grins* empfiehlt es sich, dass recordset so schnell als möglich wieder zuzumachen.

Jo, hoert sich gut an, wo haste das gelernt? ;o)

Aber die möglichkeit storedProcedures passt da nicht unbedingt hin, denn wenn du eine ausführst bekommst du fast zwangsweise auch wieder ein Recordset welches du wieder mit getRows zum Array machen könntest.

Hast recht. Unklare Auflistung.

StoredProcedures haben ihren Vorteil darin, daß sie auf dem Datenbankserver vorkompiliert sind und wesentlich schneller ausgeführt werden können. Desto komplexer die Abfrage/Prozedur destomehr Performance Gain.

  1. (von mir hinzugefügt)

du solltest dir auch mal gedanken machen, in access parameterisierte Abfragen zu erstellen und diese zu verwenden, das ist sicherer gegen SQL injection und vielleicht auch etwas performanter. Access Abfragen kann man aber noch lange nicht mit StoredProcedures eines SQL Servers vergleichen.

Parameteris... aha...(sowas wie stored proc?) okay, werde mich da mal eingooglen ..aeh.. -lesen. Ja und der Sicherheitsaspekt ist dann das naechste worauf ich mich stuerzen werde...(bereite Dich schon mal auf ein paar Fragen dazu im Forum vor!;o) Ich bin auch gerade dabei, mich in MySQL einzuarbeiten - auch wenn es wahrscheinlich nicht erste Wahl ist, wenn man auf Windows arbeitet (z.B. keine stored Proc), aber man muss sich ja einen Ueberblick verschaffen.

Wie wuerdest Du eine Connection mit asp zu Mysql machen? Habe mir Datenbanktreiber fuer Win runtergeladen und dann DSN-less mit ODBC - geht das auch besser mit OLEDB? Was ist bei MySQL zu beachten?

Wie immer, danke fuer Deine Hilfe & Gruss
Tobi