tutorials.de Buch-Aktion 02/2012
Like Tree1Danke
  • 1 Beitrag von Norbert Eder
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
371
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Ferum Ferum ist offline Mitglied Bronze
    Registriert seit
    Feb 2005
    Ort
    Münsterland
    Beiträge
    32
    Hallo Zusammen,

    ich habe ein kleines Performanceproblem und frage mich wie ich es optimieren kann.

    Der Aufbau ist eine VB 2008 Anwendung die als Datengrundlage eine mdb-Datei hat.
    Ich habe mir ein stark typsiertes Dataset angelegt und fülle eine Tabelle mit den Boardmitteln. (siehe Code)

    Code :
    1
    2
    3
    4
    5
    
    [SIZE=2]taRabatte.Fill(dsRabatte.Rabatte)[/SIZE]
     
    [SIZE=2]dsRabatte.Rabatte.AddRabatteRow(fMatrix.gDebitor, reader([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"MG1"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]).ToString, reader([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"MG2"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]).ToString, reader([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"Bestelltyp"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]).ToString)[/SIZE]
     
    [SIZE=2]taRabatte.Update(dsRabatte)[/SIZE]

    Direkt im Anschluß des Update, lese ich die komplette Tabelle wieder aus um sie in einem DGV anzuzeigen.
    Wenn ich dieses Update auf das Dataset nutze, benötige ich etwa 5 Sekunden bis ich den neuen Eintrag wieder aus der Tabelle lesen kann.
    Wenn ich jedoch direkt einen SQL-Insert nutze, habe ich dieses Problem nicht.

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    [SIZE=2]cmd.Connection = gCon[/SIZE]
     
    [SIZE=2]cmd.CommandText = [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"INSERT INTO Rabatte "[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] & _[/SIZE]
    [SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]                                       "(Debitor, MG1, MG2, Bestelltyp)"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] & _[/SIZE]
    [SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]                                       "VALUES ("[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] & fMatrix.gDebitor & [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]", '"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] & reader([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"MG1"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]).ToString & [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"', '"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] & reader([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"MG2"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]).ToString & [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"', '"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] & reader([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"Bestelltyp"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]).ToString & '"[/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515])"[/COLOR][/SIZE][/COLOR][/SIZE]
     
    [SIZE=2]cmd.ExecuteNonQuery()[/SIZE]

    Mache ich etwas falsch, wenn ich das Dataset nutze? Gibt es eine Möglichkeit die Zugriffe zu optimieren?
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Wenn du auf Performance aus bist, dann solltest du die Verwaltung deiner Daten selbst übernehmen und auf DataSet, DataAdapter und Co. verzichten. Nur so hast du auch wirklich die Möglichkeit, auf den Ablauf Einfluss zu nehmen und an den wichtigsten Stellen die für dich notwendige Geschwindigkeit zu erreichen. Daher solltest du die Daten ohne DataAdapter und Dataset holen und Aktualisierungen per Command durchführen.

    Bei Commands kannst du zusätzlich Performance gewinnen, indem du mehrere Update/Insert-Statements zusammen fasst und durch einen Command-Aufruf abarbeiten läßt. Ebenfalls bietet es sich an, bei zahlreichen Statements, die gleiche Command-Instanz wiederzuverwenden.
    Ferum bedankt sich. 

  3. #3
    Ferum Ferum ist offline Mitglied Bronze
    Registriert seit
    Feb 2005
    Ort
    Münsterland
    Beiträge
    32
    Ok, also ist das Dataset vielleicht nicht ganz das richtige an dieser Stelle.
    Inzwischen bin ich dazu übergegangen, alles ausschließlich mit normalen SQL-Statments zu machen.
    Danke für den Tip.
     

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 22.10.09, 11:41
  2. Probleme mit DataSet.Update, DataSet.Merge usw.
    Von AAF im Forum .NET Datenverwaltung
    Antworten: 3
    Letzter Beitrag: 07.01.08, 17:17
  3. Antworten: 2
    Letzter Beitrag: 29.08.07, 15:58
  4. DataSet UND DataReader für UPDATE?
    Von Deletemaster im Forum .NET Datenverwaltung
    Antworten: 1
    Letzter Beitrag: 16.01.06, 20:09
  5. DataSet Update
    Von torkel im Forum .NET Datenverwaltung
    Antworten: 2
    Letzter Beitrag: 04.09.05, 13:11