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

时间:2014-01-22 17:23:44

标签: mysql 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

1 个答案:

答案 0 :(得分:1)

此示例显示了如何在不使用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 ....

基本上,如果您可以将更新表与选择中的大型联接一起加入 - 您可以在不使数据离开数据库的情况下执行此操作。这将首先改善性能,因为数据不会传播,第二 - 因为现在这是批量与行一对一

您可能最好的方法是从复杂查询中创建一个View,然后使用该视图进行更新。规则只有3:

1 - 您的视图必须返回用于在“用户”中分配字段的字段。

2 - 您的视图必须返回用于与“users”联接的字段。

3 - 您的视图可能需要汇总,您必须在内连接中没有多于一个匹配值