首页新闻找找看学习计划

SQL端查询1s,通过SQLcommand查询就超时

0
悬赏园豆:5 [已解决问题] 解决于 2014-09-01 17:33

系统数据库和源程序是放在一台服务器的,还是服务器专用,我有两个报表,开始运行好好的,最近可能数据多了,查询会出现超时,我用SQL工具检测到这个存储过程,在SQL中运行10次,基本都是稳定在1s

但是用代码调试,却显示超时,

   var db = SqlDatabase.Create("TY_PMS_Content");
            var cmd = db.GetStoredProcCommand(stored_name);
            db.AddInParameter(cmd, "bidder_company_no", DbType.Int32, bidder_company_no);
            db.AddInParameter(cmd, "startTime", DbType.DateTime, startTime);
            db.AddInParameter(cmd, "endTime", DbType.DateTime, endTime);
            db.AddInParameter(cmd, "dep_no", DbType.Int32, dep_no);
            db.AddInParameter(cmd, "node_no", DbType.Int32, node_no);
            db.AddInParameter(cmd, "user_no", DbType.Int32, user_no);
            return db.ExecuteDataTable(cmd);

执行存储过程的代码前没有任何逻辑,非常费解,请大家帮忙指导下,是否有遇到过同样的情况,能否提供一点查询思路
执行的SQL方法如下:

 /// <summary>
        /// 执行命令
        /// </summary>
        /// <param name="command">命令对象</param>
        /// <returns>DataSet</returns>
        public override DataSet ExecuteDataSet(DbCommand command)
        {
            DataSet ds = new DataSet();

            using (MySqlConnection con = (MySqlConnection)this.CreateConnection())
            {
                command.Connection = con;

                MySqlDataAdapter da = new MySqlDataAdapter((MySqlCommand)command);

                con.Open();
                da.Fill(ds);
            }

            return ds;
        }
风醉的主页 风醉 | 小虾三级 | 园豆:1197
提问于:2014-09-01 16:03
< >
分享
最佳答案
0

通过 SQL PROFILE 跟踪下数据库性能看。

收获园豆:5
519740105 | 大侠五级 |园豆:5810 | 2014-09-01 16:06

跟踪了,发现正常是这样的,不正常的时候是空白

这没看出异常

风醉 | 园豆:1197 (小虾三级) | 2014-09-01 16:33

@许爱生活: 如果这里消耗的资源是你可接受的,那么问题可能在别的地方,比如DEBUG状态的应用,网络的状况、构建数据库访问对象的过程等。

 

还有一种情况:如果SQL在调试,这个时候会阻塞访问。

519740105 | 园豆:5810 (大侠五级) | 2014-09-01 17:03

@519740105: 在用SQLHeper 执行看看过程,原本的是封装的,  另外问下 DEBUG状态的应用 这个是什么?

风醉 | 园豆:1197 (小虾三级) | 2014-09-01 17:29

@许爱生活: 你的应用如果是DEBUG方式运行的,性能也会有影响。

519740105 | 园豆:5810 (大侠五级) | 2014-09-01 17:33

@519740105: thankyou 按这思路我在调试一步步看

风醉 | 园豆:1197 (小虾三级) | 2014-09-01 17:34

@许爱生活: 8k7

519740105 | 园豆:5810 (大侠五级) | 2014-09-01 18:20

@519740105: 解决了,但是不明确解决原因,作为结贴做下补充说明,希望能给碰到同样坑的人一点解决思路,解决途径如下:

    1:用SQLPROFILE 测试,发现虽然执行速度是1s,但是占用的资源数异常高(对具体的不了解,采用的是对比其他查询显示正常的语句)

   2:对存储过程进行隔句注释(也是对比正常的语句想到),发现where条件有个条件注释掉了就正常了,对比没发现原因,就将这个条件移到前面的查询中,瞬间正常了

  结论,可以试着注释,可能是嵌套多了,本质原因还没有找到

风醉 | 园豆:1197 (小虾三级) | 2014-09-22 15:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册