哪一个会跑得更快?

时间:2012-10-10 13:03:30

标签: c# sqldatareader sqldataadapter

  

可能重复:
  Is datareader quicker than dataset when populating a datatable?

 public DataTable GetReviewsId(Objects myObjects)
 {
     DataTable tblBindReviews = new DataTable();
     string Query = "";
     try
     {
         Query = "select distinct ProductId from tblReview where ProductId in (select ProductId from tblProduct where R=0 and T=0)";
         /*SqlConnection mySqlConnection = this.SetDatabaseConnection();
         SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(Query, mySqlConnection);
         mySqlDataAdapter.Fill(tblBindReviews);*/
         /*mySqlConnection.Open();
         SqlCommand cmd = new SqlCommand(Query,mySqlConnection);
         tblBindReviews.Load(cmd.ExecuteReader());*/
     }
     catch (SqlException ex)
     {
         throw new Exception(ex.Message);
     }
     finally
     {
         this.ClosedatabaseConnection();
     }
     return tblBindReviews;
 }

在上面的代码中,我编写了两种检索数据的方法(每种方法都在注释部分内),一种使用数据适配器,另一种使用datareader。哪两个会跑得更快?

2 个答案:

答案 0 :(得分:3)

DataReader是最快的方式。 在任何情况下,DataAdapter都会更快,因为DataAdapter在内部使用DataReader并执行其他操作(与数据集一起使用多个表,.....)

DbDataAdapter - FillInternalMethod

答案 1 :(得分:1)

如果您执行select operations,我建议您使用SqlDataReader

一次只在内存中有一条记录而不是整个结果集

与你在一次迭代中获得的速度一样快

允许您更快地开始处理结果

Nota:

使用SqlDataAdapter,您可以使用更多的内存,等到所有数据都被加载后再使用它们