.NET MySqlDataAdapter填充性能

时间:2016-09-21 13:49:54

标签: mysql .net vb.net

我遇到了使用MySqlDataAdapter.Fill()方法从MySQL数据库检索数据的性能问题,我可能只是不明白为什么。

这是我用来检索数据的VB.NET代码:

Dim DBda As New MySqlDataAdapter(command)
        Try
            connection.Open()
            DBda.Fill(DBds, table)
            connection.Close()
        Catch ex As Exception
            Throw ex
        Finally
            If Not IsNothing(command) AndAlso Not IsNothing(command.Connection) AndAlso command.Connection.State = ConnectionState.Open Then
                command.Connection.Close()
                MySqlConnection.ClearPool(command.Connection)
            End If
        End Try

虽然这只是整个方法的一部分,但它是相关部分。

这里的Fill方法需要10秒钟来检索3510行。

MySQL Workbench中的相同查询只需要0.016持续时间/ 1.578提取。

我尝试使用MySqlDataReader(使用各种不同的方法)而不是适配器来更改代码,但它需要大致相同的时间。

数据库在相关列上具有适当的索引。我不认为这是问题所在,因为DBMS上的查询速度要快得多。

以下是使用的查询:

SELECT `Mail`.`MailID`,
`Mail`.`FromAddress`,
`Mail`.`ToAddress`,
`Mail`.`ReplyTo`,
`Mail`.`Cc`,
`Mail`.`Bcc`,
`Mail`.`Subject`,
`Mail`.`BodyPlain`,
`Mail`.`SentDate`,
`Mail`.`ReceivedDate`,
`Mail`.`IsOutMail`,
`Mail`.`Priority`,
`Mail`.`IsDeleted`,
`Mail`.`IsDraft`,
`Mail`.`MailFolderID`,
`Mail`.`MailAccountID`,
`Mail`.`AttachmentNames`,
`Mail`.`MessageID`,
`Mail`.`MessageUID`,
`Mail`.`SenderUserID`,
`Mail`.`MailDisplayName`,
`Mail`.`IsMarked`,
`Mail`.`IsSpam`,
`Mail`.`MailSize` FROM `Mail` where MailAccountId=7 OR MailAccountID=9;

今天我通过网络阅读了大量的帖子,方法和视频,但我仍然不知道为什么Fill方法需要这么长时间。

如果有人有想法,我会很高兴,这可以指导我找到解决方案的正确方法。

谢谢!

0 个答案:

没有答案