首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从C#查询SQL性能差(比VBA慢得多)

从C#查询SQL性能差(比VBA慢得多)
EN

Stack Overflow用户
提问于 2015-04-30 15:42:28
回答 1查看 470关注 0票数 0

我使用C#函数来查询基于SqlConnectionSqlCommandSqlDataAdapter的DB,但是当我试图检索大量行(数百万)时,性能非常差。

代码语言:javascript
复制
using (SqlConnection mySqlConnection = new SqlConnection(connectionString))
using (SqlCommand mySqlCommand = new SqlCommand(query, mySqlConnection)){
    mySqlConnection.Open();
    DataSet myDataSet = new DataSet();
    using (SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(mySqlCommand)) { 
        affectedRow = mySqlDataAdapter.Fill(myDataSet);
    }
}

是否有方法优化大数据集的查询?

作为比较,这段VBA代码只需要4-5和20-22秒以上的C#。

代码语言:javascript
复制
Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
Set cmd = New ADODB.Command
cnt.Open
Set rst = cnt.Execute(queryString)
Dim nDimArray As Variant
nDimArray = rst.GetRows
cnt.Close
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-30 15:44:39

不要使用DataSet。使用一个与您在VBA中所做的类似的SqlReader。

代码语言:javascript
复制
using (var mySqlConnection = new SqlConnection(connectionString))
using (var mySqlCommand = new SqlCommand(query, mySqlConnection))
{
    mySqlConnection.Open();
    var reader = mySqlCommand.ExecuteReader();
    while (reader.Read())
    {
    }
    reader.Close();
}

这里有更多信息:https://msdn.microsoft.com/en-us/library/9kcbe65k%28v=vs.110%29.aspx

您也应该能够这样做,这将在您自己之后清理,以防在读取过程中抛出异常:

代码语言:javascript
复制
using (var mySqlConnection = new SqlConnection(connectionString))
{
    using (var mySqlCommand = new SqlCommand(query, mySqlConnection))
    {
        mySqlConnection.Open();
        using (var reader = mySqlCommand.ExecuteReader())
        {
            while (reader.Read())
            {
            }
        }
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29972116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档