簡體   English   中英

如何在VB.net中更快地查詢和更新

[英]How to query and update faster in VB.net

如何加快此處的速度並更快地更新行? 我知道這不應該這樣,任何人都可以推薦一種更好的做法。

謝謝

Public Sub searchUpdate()
    strSQL = "*Large query, including 3 tables"

    cmd = New MySqlCommand(strSQL, CONNECTION)
    dr = cmd.ExecuteReader()
    ListView1.Items.Clear()

    Do While dr.Read()
        a = (dr.Item("users").ToString())
         b = (dr.Item("b1").ToString() & "," & dr.Item("b2").ToString() & "," & dr.Item("b3").ToString() & "," & dr.Item("b4").ToString() & "," & dr.Item("b5").ToString() & "," & dr.Item("b6").ToString())
        won = (dr.Item("number").ToString) * (dr.Item("input").ToString())
        qt = (dr.Item("input").ToString)
        updateForSearch(a, won, qt)

    Loop
    dr.Close()
    cmd.Dispose()
    CONNECTION.Close()
    TextBox1.Text = Val(TextBox1.Text) + 1
    Timer2.Stop()

End Sub`

更新功能:

Public Function updateForSearch(ByVal a As String, ByVal won As Integer, ByVal qt As Integer) As Integer
    dr.Close()
    strSQL = "UPDATE users SET status=2, qt='" & qt & "', bcvd='" & won & "'  WHERE acvd='" & a & "'"
    Dim da As New MySqlDataAdapter(strSQL, CONNECTION)
    da.Fill(ds)
    dr = cmd.ExecuteReader()

End Function

本示例說明了如何甚至不訪問VB.net即可運行更新

UPDATE users u 
    JOIN tbl1 t1 on u.col1 = t1.col1 
    JOIN tbl2 c on t1.col2 = t2.col2
    -- join more tables 
SET 
    u.col_a = t1.col3, ......
WHERE ....

基本上,如果您可以使用選擇中的大聯接來聯接更新表,則可以在不使數據離開數據庫的情況下做到這一點。 這將極大地提高性能,首先-因為數據沒有傳輸,其次-因為現在這是批處理與一行一行的比較

可能最好的方法是從復雜查詢中創建一個視圖,然后使用該視圖進行更新。 規則只有3:

1-視圖必須返回用於分配“用戶”中字段的字段。

2-您的視圖必須返回用於與“用戶”聯接的字段。

3-您的視圖可能需要聚合,內部聯接中的匹配值不能超過一個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM