Performance einer Abfrage verbessern

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Performance einer Abfrage verbessern

    Hallo,

    ich benötige euren Rat. Es geht darum das ich eine Insert Abfrgae durchführe diese geht mir aber viel zu lang.
    Ich baue eine Verbindung zum SQL -Server auf und lade mir eine Tabelle in mein DataTable(dt). Das funktioniert auch super schnell.

    Ich möchte jetzt den Inhalt der dt in eine dBase -Datenbank schreiben, dafür habe ich eine Procedur createTable, welche die Verbindung aufbaut und öffnet:

    Nach dem öffnen der Verbindung greife ich über eine schleife auf die dt.rows zu und schreibe deren inhallt in die Datei das dauert mir aber zu lange kennt ihr eine möglichkeit die das ganze etwas beschleunigt?

    Die dbase datei existiert nicht soll jedesmal neu erzeugt werden da der Inhalt sich auf die SQL -Tabelle bezieht.

    VB.NET-Quellcode

    1. For Each row In dt.Rows
    2. Dim a As String = row(0)
    3. Dim b As Integer = row(1)
    4. Dim c As String = row(2)
    5. Dim d As String = row(3)
    6. Dim e As Double = row(1)
    7. Dim Sql As String = "INSERT INTO dbaseTabelle ([Spalte1], [Spalte1],[Spalte1],[Spalte1],[Spalte1]) " & _
    8. "VALUES ('" & a & "'," & b & ",'" & c & "','" & d & "'," & e & ");"
    9. cmd = New System.Data.OleDb.OleDbCommand(Sql, con)
    10. cmd.ExecuteNonQuery()
    11. cmd = Nothing
    12. Next


    Das ist der codeausschnit um den es sich handelt, ich hoffe ihr könnt mir helfen.
    Du kannst dasselbe Command mehrfach verwenden, und nur die DbParameter neu befüllen.
    Du kannst aber auch alles gleich auf einmal von einm DatAdapter machen lassen.

    Ich weiß nicht, ob das auch die Performance merklich bessert, aber man soll eh niemals anders als mit DbParametern arbeiten.

    Hier ist das so leidlich gelöst (es geht übrigens noch viiel besser): Tipp & Trick: DbParameter
    Aber gut möglich, dass dir bereits das zu hoch ist (wg. Extension-Methods und Kram). Dann guck mal auf MSDN - da wird auch dokumentiert sein, wie man mit DbParametern arbeitet.