Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#,MS ACCESS-OleDb命令。ExecuteReader()需要很长时间才能执行_C#_Sql_Ms Access 2010_Oledb_Rdbms - Fatal编程技术网

C#,MS ACCESS-OleDb命令。ExecuteReader()需要很长时间才能执行

C#,MS ACCESS-OleDb命令。ExecuteReader()需要很长时间才能执行,c#,sql,ms-access-2010,oledb,rdbms,C#,Sql,Ms Access 2010,Oledb,Rdbms,我的MS Access数据库中有一个表,其中包含60K+行和 我需要每30秒拍一次最新的50排 我使用这个查询: "SELECT TOP 50 * FROM MY_TABLE ORDER BY ID DESC" 问题是偶尔(+-1/50)执行查询需要10秒以上,通常平均时间为0.03秒 我在10K行和只有5行的情况下也经历了同样的行为,但延迟较小 1) 是否有人在MS Access或Command.ExecuteReader()函数中遇到过类似的情况?这是C#问题还是MS ACCES问题 C#

我的MS Access数据库中有一个表,其中包含60K+行和 我需要每30秒拍一次最新的50排

我使用这个查询:

"SELECT TOP 50 * FROM MY_TABLE ORDER BY ID DESC"
问题是偶尔(+-1/50)执行查询需要10秒以上,通常平均时间为0.03秒

我在10K行和只有5行的情况下也经历了同样的行为,但延迟较小

1) 是否有人在MS Access或Command.ExecuteReader()函数中遇到过类似的情况?这是C#问题还是MS ACCES问题

C#-执行读卡器时,延迟偶尔出现一次

RunSQLReaderMyTable(myCommand.ExecuteReader());
问题不在RunSQLReaderMyTable函数中,因为我有timewatch,我可以看到MyCommand.ExecuteReader()是问题所在

//SELECT ROWS FROM MY_TABLE
public static DataTable SelectTopMyTable()
{
    using (OleDbConnection con = new OleDbConnection(ConnStr))
    {
        string tmpStr = "SELECT TOP 50 * FROM HISTORIQUE ORDER BY ID DESC";

        using (OleDbCommand myCommand = new OleDbCommand(tmpStr, con))
        {
            if (IsConnectedToAccess())
            {
                try
                {
                    con.Open();
                    return RunSQLReaderMyTable(myCommand.ExecuteReader());
                catch (Exception err)
                {
                    MessageBox.Show(err.ToString());
                    return null;
                }
            else
            {
                MessageBox.Show("Erreur de connexion a Access. Veuillez tenter de vous reconnecter.");
                return null;
            }
        }
    }
}

你能用你真正需要的字段名列表来代替
*
?这可能有助于降低查询的复杂性。Access数据库增长是正常的,您的问题1可能与问题2有关:您应该定期对数据库进行压缩/修复。这将删除所有会减小大小并提高性能的垃圾,具体取决于您的应用程序的用途,我建议迁移到功能稍强的RDBMS。可能MSSQLServer Express(同样,取决于您的应用程序)会为其提供一些专用资源来运行查询请记住,堆栈溢出是一个“问答”站点,而不是一个用于扩展、迂回讨论的站点。请将您的问题限制在一个主题上,在这种情况下,执行查询时会偶尔出现延迟。额外的“数据库膨胀”问题是重复的,“我应该切换数据库”和“MySQL与MSSQL一样快”的切线是off-topic.Hmm。也许这是你自己的节目。如果你需要每30秒录制50条最新的记录,我假设有相当多的插入正在进行。这些进程是否异步运行?--我最好的猜测是锁定冲突。你必须用整个设置的细节来扩展你的问题,这样我们才能做出更有根据的猜测。。。