假如有两个sql直接执行查询都只要1秒:
sql1查出来1万多条数据,
sql2查出来10万多条数据。分别调用DataAdapter.Fill(DataSet)方法花的时间:
sql1是1分钟多点,sql2是10几秒。具体的测试方法是
oda.SelectCommand = new OracleCommand(sql1, cn);
                Console.WriteLine(DateTime.Now);
                oda.Fill(ds1, "test1");
                Console.WriteLine(DateTime.Now);
                Console.WriteLine();                oda.SelectCommand = new OracleCommand(sql2, cn);
                Console.WriteLine(DateTime.Now);
                oda.Fill(ds2, "test2");
                Console.WriteLine(DateTime.Now);
                Console.WriteLine();请教一下是什么原因?另外说一下,虽然两个语句直接执行都只要1秒,但是sql1的执行计划的cost很大,会不会是这个原因?

解决方案 »

  1.   

    那就是你语句的原因了 是不是sql1没有走索引 等等....
      

  2.   

    Fill操作,包含有数据复制的操作。
    不知道你说的直接执行,指的是全部结果都返回以后的总时间,还是说只是执行select完不等结果的时间。
      

  3.   

    直接执行是select完不等结果的时间,你的意思是不是可能是数据复制消耗了大量的时间,我也觉得可能是这个原因。
      

  4.   

    现在发现不是数据复制消耗了大量时间,而是直接执行时结果被缓存了,我看到的只是前几百条数据,还是得去优化sql1,不过还是感谢大家