我有一个DataReader
填充 a 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();