Tobi: Recordset - Performance von DB Abfrage und Code

Hallo zusammen,

Frage 1:
ich wuerde gerne wissen, welchen Code ihr vorziehen wuerdet und was performanter ist:

sub open_db()
Dim path_db, provider_db
path_db = Server.MapPath("") & "\db.mdb"
provider_db = "Microsoft.Jet.OLEDB.4.0"
set con = Server.CreateObject("ADODB.Connection")
con.Open "PROVIDER=" & provider_db & ";DATA SOURCE=" & path_db
end sub

call open_db()

Dim rs

************* bis hier gleich*************
Moeglichkeit 1:
Set rs = Server.CreateObject("ADODB.Recordset")
' add parameter to recordset object
rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.LockType = adLockReadOnly
rs.Open sql, con

Moeglichkeit 2:
set rs = con.Execute(sql)

***************ende************************

Liefert beides das selbe.....oder?

Frage 2:
Ich habe das mit den Eigenschaften vom recordset noch net kapiert...was bringt z.B.
rs.Open sql, con, adInteger, adParamInput ?
Lege ich damit vorher schon fest, was fuer ein Format die Werte haben und wirkt sich das dann positv auf das Performance der Datenbank aus? Ist das das gleich, wie wenn ich rs.Fields.append festlege? Welche Eigenschaften wuerdet ihr fuer ein Recordset empfehlen, dass a) nur gelesen werden soll b) auch fuer UPDATE genutzt werden soll?

Waere nett,wenn jemand mir da helfen koennte...
Danke & Gruss
Tobi

  1. Hi, hallo

    armer Kerl, antwortet dir mal wieder keiner .. :-)

    es gibt definitiv Performance Unterschiede zwischen diesen "Methoden" und deren Params

    set rs = conn.execute(sql)   gibt automatisch ein Recordsetobjekt zurück: ForwardOnly und ReadOnly  was sich positiv auswirkt, wenn du einfach hintereinander Daten in HTML ausgeben wirst.

    den selben effekt erzielst du aber auch mit rs.open sql,conn,openMode,Lockmode

    wenn du statt forwardOnly OpenStatic verwendest kannst du das Recordset auch vorwärts und Rückwärts durchsuchen.

    beides sind fixe snapshots von den Daten zu einem Zeitpunkt X

    woher kommt das:

    rs.Open sql, con, adInteger, adParamInput ?

    rs.open erwartet command,verbindung,openMode,Lockmode  als "Parameter", aber wenn du mit parameterisierten Abfragen arbeiten willst, dann mußt du über die Parameter-Collection des Commands gehen.

    Tschau, tschüß,
    Frank

    1. Hi,

      armer Kerl, antwortet dir mal wieder keiner .. :-)

      ...die Einsamkeit der ASP Entwickler... ;-)...bzw. haben ja alle keine Ahnung, alles Trolls...;-)))...

      es gibt definitiv Performance Unterschiede zwischen diesen "Methoden" und deren Params

      set rs = conn.execute(sql)   gibt automatisch ein Recordsetobjekt zurück: ForwardOnly und ReadOnly  was sich positiv auswirkt, wenn du einfach hintereinander Daten in HTML ausgeben wirst.

      den selben effekt erzielst du aber auch mit rs.open sql,conn,openMode,Lockmode

      D.h. fuer einfache Ausgabe waere die erste Methode mit execute aufgrund weniger Zeilen Code ausreichend (weil by default ForwardOnly und ReadOnly )? Was ist mit der Definition des rs als ADODB.Recordset?

      wenn du statt forwardOnly OpenStatic verwendest kannst du das Recordset auch vorwärts und Rückwärts durchsuchen.

      Jep, das war mir schon klar.

      beides sind fixe snapshots von den Daten zu einem Zeitpunkt X

      Jep,d as auch...

      woher kommt das:

      rs.Open sql, con, adInteger, adParamInput ?

      rs.open erwartet command,verbindung,openMode,Lockmode  als "Parameter",

      Ja, Parameter sind mir eigentlich klar, aber adInteger, adParamInput war mir unklar. Ist also nur bei paramet. Abfragen wichtig?

      Danke & Gruss
      Tobi