为什么 TableAdapter.Fill 数据源之间的性能差异

2024-01-15

我有一个 Windows 窗体应用程序DataGridView居住着一个TableAdapter。我正在使用Fill循环更新UI数据的方法Async像这样子。

Private Async Sub updateUI()
    Dim sw As New Stopwatch
    While True
        Await Task.Delay(3000)
        sw.Restart()
        'myTableAdapter.Fill(getDataWithMySQL())
        'myTableAdapter.Fill(myDataSet.myTable)
        myTableAdapter.Fill(myDataSet.myStoredProc)
        logger.Debug(sw.ElapsedMilliseconds)
    End While
End Sub

The getDataWithMySQL函数如下:

Private Function getDataWithMySQL() As myDataSet.myDataTable
    Dim connStr As String = My.Settings.myConnectionString
    Dim sql As String = "SELECT ... LEFT JOIN ..."
    Dim dt As New myDataSet.myDataTable
    Using conn As New MySqlConnection(connStr)
        Using cmd As New MySqlCommand()
            With cmd
                .CommandText = sql
                .Connection = conn
            End With
            Try
                conn.Open()
                Dim sqladapter As New MySqlDataAdapter(cmd)
                sqladapter.Fill(dt)

            Catch ex As MySqlException
                MsgBox(ex.Message)
            End Try
        End Using
    End Using
    Return dt
End Function

myDataSet.myTable是相同的myDataSet.myStoredProc除非它是通过在数据集设计器中连接表来创建的。明显地myDataSet.myStoredProc是源数据库中存储过程中的相同查询。

因此对标Fill每种方法都使用Stopwatch我得到以下结果:

  • myDataSet.myStoredProc
    ~750ms

  • myDataSet.myTable
    ~550ms

  • getDataWithMySQL()

所以我的问题是,是什么导致了这里的性能差异?我更喜欢使用myDataSet.myTable or myDataSet.myStoredProc但我不知道是否可以以某种方式优化它们以匹配性能getDataWithMySQL().


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 TableAdapter.Fill 数据源之间的性能差异 的相关文章

随机推荐