在我的c#mvc 4应用程序项目中,我们需要从sqlquery中获取数据,然后填充到C#datatable中。 我们必须用超过500万行和12列填充数据表。
如果数据<1百万,则应用程序需要3分钟。 如果它是> 100万系统被绞死。
这是我正在使用的代码。
public DataTable GetTheData()
{
DataTable dtDataTablesList = new DataTable();
string NewconnectionString ="Mycooectionstring";
SqlConnection spContentConn = new SqlConnection(NewconnectionString);
string sqlselectQuery = "select * from table";
try
{
spContentConn.Open();
SqlCommand sqlCmd = new SqlCommand(sqlselectQuery, spContentConn);
sqlCmd.CommandTimeout = 0;
sqlCmd.CommandType = CommandType.Text;
sqlCmd.ExecuteNonQuery();
SqlDataAdapter adptr = new SqlDataAdapter(sqlCmd);
adptr.Fill(dtDataTablesList);
spContentConn.Close();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (spContentConn != null)
spContentConn.Dispose();
}
return dtDataTablesList;
}
答案 0 :(得分:1)
为什么一次只能显示10万卢比的记录。您应该使用分页和限制记录数。我建议如果你有那么大的记录显示那么你应该一次显示最多500条记录。即使500条记录也很大,所以你可以减少数量。通过与您的团队和客户讨论记录。
即使您设法在相当长的时间内加载所有这些记录,浏览器也无法处理那么多记录并可能崩溃。但这只是我的假设没有经过测试和验证。
您可以参考以下SQL代码进行分页
create table #TestTable(
PK int primary key,
Name nvarchar(50)
)
insert into #TestTable (PK, Name) values
(1, 'Name1'),
(4, 'Name4'),
(6, 'Name6')
select * from
(
select row_number() over(ORDER BY pk ) SN, * from #TestTable
) temp
where SN>=1 and SN<=500
1和500应该是动态的。在第1页中,您在第2页中传递1和500,您应该传递501和1000.