C#从mysql检索大型数据表花费的时间太长(200k-20列记录)
我正试图从datatable中获取一些数据 这是我的密码C#从mysql检索大型数据表花费的时间太长(200k-20列记录),c#,mysql,database,datatable,dataset,C#,Mysql,Database,Datatable,Dataset,我正试图从datatable中获取一些数据 这是我的密码 public DataTable getAllProducts() { MySqlConnection conSQL = new MySqlConnection(connectionString); conSQL.Open(); MySqlCommand getProductsCMD = new MySqlCommand(@"SELECT
public DataTable getAllProducts()
{
MySqlConnection conSQL = new MySqlConnection(connectionString);
conSQL.Open();
MySqlCommand getProductsCMD = new MySqlCommand(@"SELECT
products.*
FROM products", conSQL);
MySqlDataAdapter adapter = new MySqlDataAdapter(getProductsCMD);
DataSet productDataSet = new DataSet();
adapter.Fill(productDataSet, "Products");
conSQL.Close();
if (productDataSet.Tables[0].Rows.Count > 0)
{
return productDataSet.Tables[0];
}
return null;
}
填充数据表几乎需要10秒,并且至少需要800mb的内存。之后我将它转储到一个更轻的类中,我的应用程序将下降到70mb。
问题是10秒(至少)。时间太长了。有没有办法让它更快
更新:
对于那些说部分调用您的数据的人。我试过了
mysql阻碍了这一过程。还有另外一个名单,我们从批发200k。它需要扫描,然后检查我们的数据库中是否有该产品。
20万次从mysql请求只需要一个datarow,程序就可以扫描它并执行它的过程,这大约需要40分钟
但如果我在程序中加载所有数据表并在我自己的程序中进行过滤,则需要大约5分钟才能完成整个工作。
所以mysql在这种情况下是一个瓶颈 有多少种产品?内存使用表明有很多,所以您真的需要全部加载它们,而不是按需加载/响应搜索/以分页形式加载吗?从数据库加载到宇宙中可能会很痛苦。为什么你会对20万条记录占用大量内存感到惊讶?为了更快地加载更少的列或行。占用这么多内存我没有任何问题。它的逻辑。但问题在于数据表中充满了数据。MySQL需要花费太长的时间。要提高效率,可以做的一件事是打开一个数据读取器,并在其中循环创建类。这至少可以避免一步。不过,如果可能的话,最好只加载您需要的数据,而不是加载整个数据集。好主意,迈克。问题是我需要所有的。有多少种产品?内存使用表明有很多,所以您真的需要全部加载它们,而不是按需加载/响应搜索/以分页形式加载吗?从数据库加载到宇宙中可能会很痛苦。为什么你会对20万条记录占用大量内存感到惊讶?为了更快地加载更少的列或行。占用这么多内存我没有任何问题。它的逻辑。但问题在于数据表中充满了数据。MySQL需要花费太长的时间。要提高效率,可以做的一件事是打开一个数据读取器,并在其中循环创建类。这至少可以避免一步。不过,如果可能的话,最好只加载您需要的数据,而不是加载整个数据集。好主意,迈克。问题是我需要所有这些。