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发送到客户端。