У меня есть функция на моем веб-сайте, где администратор может загрузить содержимое таблицы.Таблица имеет около 16ks и только 8 столбцов.
Вот мой код C #
using (MySqlConnection con = new MySqlConnection(constr))
{
string query = "SELECT * from wp_portal_users";
using (MySqlCommand cmd = new MySqlCommand(query))
{
cmd.Connection = con;
con.Open();
MySqlDataReader sdr = cmd.ExecuteReader();
DataTable dt = new DataTable();
if (sdr.HasRows == true)
{
dt.Columns.Add("sysproID");
dt.Columns.Add("password");
dt.Columns.Add("username");
dt.Columns.Add("update_time", typeof(string));
dt.Columns.Add("tempPasswordValidity");
dt.Columns.Add("tempPassword");
dt.Columns.Add("last_login");
dt.Columns.Add("login_count");
dt.Rows.Add("Syspro ID", "Password", "Username", "Last Updated", "Temp Password Validity", "Temp Password", "Last Login", "Login Count");
DataRow dr = null;
while (sdr.Read())
{
dr = dt.NewRow();
dr["sysproID"] = sdr["sysproID"].ToString();
dr["password"] = sdr["password"].ToString();
dr["username"] = sdr["username"].ToString();
dr["update_time"] = sdr["update_time"].ToString();
dr["tempPasswordValidity"] = sdr["tempPasswordValidity"].ToString();
dr["tempPassword"] = sdr["tempPassword"].ToString();
dr["last_login"] = sdr["last_login"].ToString();
dr["login_count"] = sdr["login_count"].ToString();
dt.Rows.Add(dr);
}
}
string csv = string.Empty;
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
//Add the Data rows.
csv += row[column.ColumnName].ToString().Replace(",", ";") + ',';
}
//Add new line.
csv += "\r\n";
}
//Download the CSV file.
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=PortalUsers.csv");
Response.Charset = "";
Response.ContentType = "application/text";
Response.Output.Write(csv);
Response.Flush();
Response.End();
}
}
Когда это выполняется на таблице с несколькими строками, это работает хорошо.С 16k строк это время ожидания.Что я могу изменить, чтобы исправить эту проблему производительности?