刚才在ms-sql server版问,有人提议到C#版问...
现在把大量要查询的sql语句(几千或者几万条)存放在一个数组中,然后对每一条sql语句查询,得到的结果存放在一个dataset中,那么如何提高效率呢?我的查询代码如下:DataSet da = new DataSet(); //定义一个dataset,保存查询结果
SqlDataAdapter colAdapter = new SqlDataAdapter();
SqlConnection sqlconn = new SqlConnection(ConfigurationManager.AppSettings["connectionString"].ToString()); //连接字符串在配置文件
while(index < CountNum)//查询没有结束
{
colAdapter.SelectCommand = new SqlCommand(query[index], sqlconn); //query中存放要查询的sql语句
colAdapter.Fill(da, hashList[index]); //设置表名
index++;
}
我测试的时候发现查询很慢,机器几乎没有反应了试过用多线程做,不过比单线程还要慢。
太惨了,只有10分可用分了...想加都加不了了。
现在把大量要查询的sql语句(几千或者几万条)存放在一个数组中,然后对每一条sql语句查询,得到的结果存放在一个dataset中,那么如何提高效率呢?我的查询代码如下:DataSet da = new DataSet(); //定义一个dataset,保存查询结果
SqlDataAdapter colAdapter = new SqlDataAdapter();
SqlConnection sqlconn = new SqlConnection(ConfigurationManager.AppSettings["connectionString"].ToString()); //连接字符串在配置文件
while(index < CountNum)//查询没有结束
{
colAdapter.SelectCommand = new SqlCommand(query[index], sqlconn); //query中存放要查询的sql语句
colAdapter.Fill(da, hashList[index]); //设置表名
index++;
}
我测试的时候发现查询很慢,机器几乎没有反应了试过用多线程做,不过比单线程还要慢。
太惨了,只有10分可用分了...想加都加不了了。
SqlDataAdapter colAdapter = new SqlDataAdapter();
SqlConnection sqlconn = new SqlConnection(ConfigurationManager.AppSettings["connectionString"].ToString()); //连接字符串在配置文件
colAdapter.SelectCommand = new SqlCommand(query[0], sqlconn);
while(index < CountNum)//查询没有结束
{
colAdapter.Fill(da, hashList[index]); //设置表名
index++;
colAdapter.SelectCommand.CommandText = query[index] //query中存放要查询的sql语句
}
不过,即使这么改过了,我估计还是慢,你的瓶颈恐怕是反复从数据库中查询导致的。怎么会有这么大的查询量呢?
要么把这些查询放在存储过程做,然后读取结果;要么每次执行一个小的查询,一个或几个sql语句。
嗯。下午要尝试一下用函数做,存储过程传递参数实在不方便或者一次执行100个sql语句。
就像ERP中的MRP一样,要是在客户端算,会死人的,都是再数据库上算,然后取结果的.