C# 数据读取器速度慢
我有一个C# 数据读取器速度慢,c#,data-binding,ado.net,C#,Data Binding,Ado.net,我有一个DataReader,它填充GridView,但速度非常慢 我装载5000行。使用SSMS在SQL上运行查询时,只需1-5秒,但使用浏览器则需要30-45秒:/ 如何改进此功能以加快速度 我的代码: public SqlDataReader MostraVistoriaOpereracionalAdmin(String data1, String data2, string todos) { conn.Open(); string sql = "SELECT CONVER
DataReader
,它填充GridView
,但速度非常慢
我装载5000行。使用SSMS在SQL上运行查询时,只需1-5秒,但使用浏览器则需要30-45秒:/
如何改进此功能以加快速度
我的代码:
public SqlDataReader MostraVistoriaOpereracionalAdmin(String data1, String data2, string todos)
{
conn.Open();
string sql = "SELECT CONVERT(VARCHAR(10), data, 103) AS 'Data', " +
"motorista AS 'Motorista', "+
"ajudante1 AS 'Ajudante I', "+
"ajudante2 AS 'Ajudante II', "+
"CASE WHEN os = 0 THEN 'Não' WHEN os = 1 THEN 'Sim' END AS' OS ', "+
"CASE WHEN mtr = 0 THEN 'Não' WHEN mtr = 1 THEN 'Sim' END AS 'MTR', "+
"CASE WHEN roteiro = 0 THEN 'Não' WHEN roteiro = 1 THEN 'Sim' END AS 'Roteiro', "+
"CASE WHEN final = 0 THEN 'Não' WHEN final = 1 THEN 'Sim' END AS 'Dest. Final', "+
"os * -1 + mtr * -5 + roteiro * -3 + final * -10000 AS 'pontos', "+ // Faz o calculo da pontuação
"gravado_por AS 'Gravado Por', "+
"gravado_em AS 'Gravado Em' " +
"FROM tbl_vistoria WHERE data BETWEEN '"+data1+"' AND '"+data2+"'";
if (todos != "TODOS")
{
sql += " AND (motorista = '"+todos+"' OR ajudante1 = '"+todos+"' OR ajudante2 = '"+todos+"')";
}
sql += "ORDER BY tbl_vistoria.data";
command = new SqlCommand(sql, conn);
dataReader = command.ExecuteReader();
return dataReader;
}
我在按钮中的操作
。它调用DataReader
:
VistoriaDB vistoriaDB = new VistoriaDB();
grvOperacional.DataSource = vistoriaDB.MostraVistoriaOpereracionalAdmin(d1, d2, funcionario);
grvOperacional.DataBind();
为什么要在GridView中显示5000条记录?您是否至少在网格中使用分页?每个记录都会导致网格在html表格中生成tablerow,该表格必须发送到客户端并由浏览器呈现。在这种情况下,最简单的方法是启用分页。进行一些调试以找到瓶颈。从数据库中读取数据是慢的部分吗?数据库和UI之间的代码中有什么东西?是否有大量数据被发送到浏览器?页面上的JavaScript速度慢?你需要找到慢的部分,然后才能找到原因。不。。。用户不喜欢分页:/n此外,从这段代码的外观来看,很有可能您暴露了SQL注入漏洞。@Pedro:然后告诉用户ASP.NET不是Winforms,所有数据必须通过网络发送两次,第一次从数据库发送到Web服务器,第二次从iis发送到客户端。