DataReader很慢

时间:2013-04-12 14:09:28

标签: 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 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();

0 个答案:

没有答案
相关问题