C#ODBC Query非常慢

时间:2017-01-17 01:46:44

标签: c# odbc

我的访问数据库有700条记录,每条记录有50个字段。我使用PHP的ODBC查询,查询速度非常快,但我使用C#的ODBC查询,速度很慢,代码如下:

m_conn = new OdbcConnection("DSN=real");//This DSN set by through the windows control panel,ODBC manager,system dsn 
m_conn.Open();
string sqlstr="select  * from table1 where id = 1";
OdbcCommand selectCMD = new OdbcCommand(sqlstr, m_conn);
OdbcDataReader myreader;
myreader = selectCMD.ExecuteReader();
if (myreader == null)
   return null;
string s =myreader["field"].ToString();//here,execution speed is very slow,why?

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

不要为您的应用选择比您需要处理的数据更多的数据。

您的陈述select * from table1 where id = 1正在选择所有字段。如果您只需要名为field的字段,请将您的select语句更改为select field from table1 where id = 1

如果您提供有关数据库结构的其他信息,我可能会提供更多帮助。

答案 1 :(得分:0)

这里有一些建议。我猜你正在多次访问这个代码,这是缓慢进入的地方。这很可能是因为你没有正确处理/关闭连接。下面是使用using子句重构的代码,它在调用后强制使用Dispose。

此外,指定列名称将有助于访问优化查询,而不是使用星号。

最后,如果您只关注1个变量,请考虑将查询更改为仅返回您要查找的值,并将呼叫更改为ExecuteScalar()调用。

// Consider specifying the fields you are concerned with
string sqlstr="select * from table1 where id = 1";

using (var m_conn = new OdbcConnection("DSN=real"))//This DSN set by through the  windows control panel,ODBC manager,system dsn 
using (var selectCMD = new OdbcCommand(sqlstr, m_conn))
{
    m_conn.Open();

    using (var myreader= selectCMD.ExecuteReader())
    {
        if (myreader == null)
            return null;
        string s =myreader["field"].ToString();
    }
}