C# mySQL-插入数据花费的时间很慢

C# mySQL-插入数据花费的时间很慢,c#,mysql,performance,C#,Mysql,Performance,我对使用C语言的程序的性能有疑问 在第一个循环中,表将以54秒的时间插入和更新175000条记录。 在第二个循环中,有175000条记录,1分11秒。 接下来是第三个循环,时间为18195 1分28秒。 循环正在进行,125条记录所需的时间最多可达2分钟 我想知道为什么较小的记录需要更长的时间来更新?更新记录的数量是否不会影响完成循环所需的时间 有人能给我一些启发吗 程序流程: 插入到表中日期、时间选择日期、来自rawdatatbl的时间,其中id>=startID&&id报告的行为似乎与表的不

我对使用C语言的程序的性能有疑问

在第一个循环中,表将以54秒的时间插入和更新175000条记录。 在第二个循环中,有175000条记录,1分11秒。 接下来是第三个循环,时间为18195 1分28秒。 循环正在进行,125条记录所需的时间最多可达2分钟

我想知道为什么较小的记录需要更长的时间来更新?更新记录的数量是否不会影响完成循环所需的时间

有人能给我一些启发吗

程序流程:


插入到表中日期、时间选择日期、来自rawdatatbl的时间,其中id>=startID&&id报告的行为似乎与表的不断增大以及UPDATE语句的低效查询执行计划一致。最可能的解释是更新正在执行完整的表扫描以定位要更新的行,因为没有合适的索引。随着表中添加的行越来越多,执行完整表扫描的时间也越来越长

快速建议:

查看通过运行EXPLAIN获得的查询执行计划

验证是否有合适的索引可用并正在使用

除此之外,还有MySQL实例本身的调优。但这将取决于表使用的存储引擎,MyISAM、InnoDB等。

请为这两个表提供SHOW CREATE TABLE和实际语句。这里有一些猜测

目标表具有索引。由于索引是在插入时生成的,因此任何随机索引都会变得越来越慢。 innodb_buffer_pool_大小太小,缓存成了一个问题。 该更新似乎是一个完整的表更新。嗯,这张桌子每次都更大。 在执行下一个id>=startID的查询之前,您是如何从一个查询中获取startID的?当您深入到表中时,代码可能会变慢。 你说在第二个循环中,循环在哪里?或者您是指插入…选择作为循环?
请显示您所询问的代码。是否在所有三个循环中执行插入和更新?@幸运的是,对于此表A,每个循环将通过从其他表(如原始数据表)中选择日期和时间来插入日期和时间,然后程序将更新表A中的值