0

我有一个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();
4

0 回答 0