环境:
windows 2003 
sql server 2005
.net 2.0现象:
一个在数据库中执行时间不需1秒的存储过程,
到 asp.net 中却要 20 秒,
我尝试过用 SqlDataSource 直接读、用 SqlDataSource 在 CodeFile 中手动读、用 dataReader 通过 SqlHelper 读而不绑定数据,
都是一样的慢。百思不得其解。
请问您遇过这情况吗?
或赐教会是什么原因?

解决方案 »

  1.   

    一个在数据库中执行时间不需1秒的存储过程
    和在程序里面执行有很大区别的
    不光是asp.net一家的原因
      

  2.   


    用 SqlDataSource 直接读是在 IDE 中设置,无须代码;用 dataReader 通过 SqlHelper 读而不绑定数据的代码也很短:
        protected void Page_PreRender(object sender, EventArgs e)
        {
            string SQL = "p_Test";
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.ConnStr, CommandType.StoredProcedure, SQL, null);
            //作为测试,这里什么都没干
            dataReader.Close();
        }如果屏蔽掉这段代码,执行时间为0.00ms。
      

  3.   

    楼主你在sql中测试下你的存储过程,如果快的话,证明有可能是在asp.net连接数据库的时候慢!分别测试下!或者写个一般的查询看看在asp.net中速度怎么样!
      

  4.   

    分层提取数据吧,用Sql Server Profile监视你的SQL语句执行状况用可视化工具生成的数据连接和GridView的自带的分页和排序,会导致效率相当低下,是提取全部数据再发的!
      

  5.   


     你的系统本身有问题,尤其是IIS
      

  6.   

    SQL采用存储过程。如果说你有在SQL中执行测试,很快,请先把你的SQL执行缓存去掉
    dbcc dropcleanbuffers
    dbcc freeproccache
    如果SQL中执行快,那注意sqldataReaer不要一次性读取大量数据。另外我个人觉得此时,您应该单步调试进去看看为什么哪个操作这么慢
    如果数据不要求实时性高。那可考虑将该数据存入缓存
      

  7.   

    第一次运行DEBUG过程会慢点。编译好,发布到服务器上应该就不会了因为那时候WEB。CONFIG下可以把DEBUG都设置为FALSE