.net 代码解决SQL查询超时问题
2016-01-28 09:27
423 查看
相关背景: 一个报表统计型的存储过程,随着数据量增加,查询时间越来越长,因为存储过程超过2K行,要优化可能需要更多的时间,因为急需要报表数据,只好先从 代码层处理超时问题。
以下是解决方案。
app.config
调用层:
DataSet dsdData = DBA.GetDataSetByParameters("[dbo].[Daily_***_Activity_Stats_by_***_Monitored]"); // 这里是存储过程
(结束)
以下是解决方案。
/// <summary> /// 执行Sql返回DataSet /// </summary> /// <param name="strSql"></param> /// <param name="ConnStr"></param> /// <returns></returns> public static DataSet GetDataSetByParameters(string strSql, List<SqlParameter> sqlParameters = null) { try { SqlConnection objConn = GetConnection(ConnStr); SqlCommand sqlCommand = new SqlCommand(); sqlCommand.CommandTimeout = 600;//unit:seconds sqlCommand.Connection = objConn; sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.Parameters.Clear(); using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand)) { sqlCommand.CommandText = strSql; if (sqlParameters != null) { sqlCommand.Parameters.AddRange(sqlParameters.ToArray()); } DataSet ds = new DataSet(); sqlDataAdapter.Fill(ds); return ds; } } catch { return null; } }
//数据库连接字符串 private static string _connStr=""; public static string ConnStr { get{ if (string.IsNullOrEmpty(_connStr)) { _connStr=System.Configuration.ConfigurationManager.ConnectionStrings["DbConnection"].ToString(); } return _connStr; } }
app.config
<?xml version="1.0" encoding="utf-8"?> <configuration> <connectionStrings> <add name="DbConnection" connectionString="Data Source=***;Initial Catalog=***;Persist Security Info=True;User ID=***;Password=***;Connection Timeout=180000" providerName="System.Data.SqlClient"/> </connectionStrings> <appSettings> <!-- 1 means debug mode; 0 means PROD; --> <add key="IsDebug" value="1"></add> </appSettings> </configuration>
调用层:
DataSet dsdData = DBA.GetDataSetByParameters("[dbo].[Daily_***_Activity_Stats_by_***_Monitored]"); // 这里是存储过程
(结束)
相关文章推荐
- MySQL开发规范与使用技巧总结
- mysql 添加索引 mysql 如何创建索引
- MySQL执行状态分析
- navicat for mysql 10.1.7注册码
- mysql中的null字段值的处理及大小写问题
- 实时数据库简介和比较
- SQL中IN和EXISTS用法的区别
- Oracle中视图和同义词的区别
- Cloudera之旅 ☞ 【二】Spark-sql部署
- spring mongodb用法
- 实例讲解分布式缓存软件Memcached的Java客户端使用
- SparkSQL JOIN 相关的自己看的笔记;
- redis
- 数据库的NULL值讨论
- SQL Server ->> WITH RESULT SETS子句
- 运用Log和Trace文件排除Oracle Net问题
- 深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析
- SQL Server ->> PARSE函数
- MongoDB学习领悟: 文档的书写是基于K-V的map演算形式
- mongodb中最为简单的一种安装方法