如何提高dataadapter.fill的性能?

问题描述 投票:0回答:1

我正在使用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秒。

c# sql datatable sqldataadapter
1个回答
0
投票

客户端可以创建与sql服务器的连接吗?如果是这样,您可以将查询结果写入表中,并将数据库和表名返回给客户端。然后,客户端可以将表加载到Excel中。

有关更多信息,请参见文章:Fastest way to load data from SQL Server to Excel

© www.soinside.com 2019 - 2024. All rights reserved.