我正在使用SqlDataAdapter.fill将数据存储在DataTable中。然后将该表作为JSon返回。
在客户端应用程序(Excel)中获取该JSon时,它会变得非常缓慢。
任何想法我该如何提高性能。?
API代码:
[Authorize]
[Route("GetRecord")]
public DataTable Records(DSModel model)
{
var table = new DataTable();
using (var da = new SqlDataAdapter(model.qstring, model.ds))
{
da.Fill(table);
return table;
}
}
客户代码:
DataTable dt = (DataTable)JsonConvert.DeserializeObject(records, (typeof(DataTable)));
foreach (DataRow dr in dt.Rows)
{
rowcount += 1;
for (int i = 1; i <= dt.Columns.Count; i++)
{
// on the first iteration we add the column headers
if (rowcount == 3)
{
osheet.Cells[2, i] = dt.Columns[i - 1].ColumnName;
}
// Filling the excel file
osheet.Cells[rowcount, i] = dr[i - 1].ToString();
}
}
为了进行比较,如果我使用SQL Connection从Excel查询相同的数据,则需要2-3秒。使用上面的代码,特定表的时间将近11-14秒。
客户端可以创建与sql服务器的连接吗?如果是这样,您可以将查询结果写入表中,并将数据库和表名返回给客户端。然后,客户端可以将表加载到Excel中。
有关更多信息,请参见文章:Fastest way to load data from SQL Server to Excel