我有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;
}
我在Button
中的行动。它调用DataReader
:
VistoriaDB vistoriaDB = new VistoriaDB();
grvOperacional.DataSource = vistoriaDB.MostraVistoriaOpereracionalAdmin(d1, d2, funcionario);
grvOperacional.DataBind();