日期:2014-05-18  浏览次数:20509 次

da.Fill(ds, startRecord, maxRecords, "table"); 工作原理
C# code

 PrepareCommand(conn, cmd, cmdtype, strsql, parameters);
 OleDbDataAdapter da = new OleDbDataAdapter();
 da.SelectCommand = cmd;
 DataSet ds = new DataSet();
 try
 {
     da.Fill(ds, startRecord, maxRecords, "table");
     return ds;
 }
 catch (System.Data.OleDb.OleDbException e)
 {
     throw e;
 }
 finally
 {
     conn.Dispose();
 }





问个问题:da.Fill(ds, startRecord, maxRecords, "table");


这一句实现分页查询表功能,但是我不了它的工作原理。

我的假想原理:
  假设数据库中有500万条数据,传进来sql语句查询表中第400万-401万条数据,并进行排序,最后输出。
  是不是系统在不停的操作着500万条数据,拍好序后,最后截取那1万条数据输出。
  ------会不会卡死了? 我所说的1万是比喻,也可以是取其中的两条数据。

------解决方案--------------------
试试呗,这得看你机器和数据量还有网络传输情况,应该不会很慢的
------解决方案--------------------
应该不会扫描500W次吧,应该对这个有优化的,比如到了满足条件的时候直接返回要查询的数据不再向下查询