数据绑定语句怎么写可以达到最好的性能?相同数据量、不考虑缓存的情况下,以下哪种方式可以达到最好的性能:
1.做OR映射,将数据读取到List<MyObj>,之后再绑定List<MyObj>;
2.直接绑定强类型DataSet;
3.直接绑定DataReader如果考虑了缓存,那么以下哪种方式可以达到最好的性能:
1.绑定List<MyObj>,做页面缓存;
2.缓存结果集List<MyObj>;
3.绑定强类型DataSet,做页面缓存;
4.缓存结果集强类型DataSet;
5.绑定DataReader,做页面缓存以上问题仅考虑性能,不考虑系统的可维护性等问题。望各位不吝赐教呵呵
最好有实际测试的结果和对相应原理的详尽分析,谢谢:)分不够本人会另开新帖再加

解决方案 »

  1.   

    绑定datareader的方式比较不理解。
    页面里面处理数据底层的动动么?考虑cache那么考虑viewstate么?ORmapping要看怎么用咯,nhibernate不是很快的。
      

  2.   

    很多数据库的api(例如c#函数库)都有对光标进行“基表”处理功能,也就是并不建立缓冲、直接读取记录。每一种数据库在实现ADO.NET的驱动的时候都在遵循其接口功能的时候自己按照自己的方式处理实际的流程。但是“只读、只向前”访问数据的操作,我相信每一个开发数据库驱动的程序员都会使用这个数据库最快速的api来实现。1、2总归是要读取数据库的,它读数据库就不一定比3块,何况还要再一一赋值给内存对象的各个属性,做的事情只多不少。不过,如果你能够轻松使用1,就使用1。
      

  3.   

    如果不考虑数据提取耗时,仅绑定过程耗时,List<MyObje>、强类型DataSet、DataReader的表现差距大约有多少呢?绑定表达式怎么写最好?
      

  4.   

    绑定控件的时候不要使用 DataReader !你做一下压力测试就知道了,很容易出现错误的。原因:DataReader 在绑定控件的时候是要保持打开数据库连接的,会增大连接数据库的时间。数据库连接(数据连接池)这个是比内存还要宝贵的资源。另外1、内存操作的速度是很快的。2、网站是很多人一起访问的,不要只考虑一个人访问的情况3、不知道你做的是不是网站,先按照网站的情况说一下。
      

  5.   

    谢谢楼上。
    是否有下面几项耗时的详细测试数据?[DataReader->ObjList]
    [DataReader->绑定]
    [ObjList->绑定]其中的
    [DataReader->ObjList]
    [DataReader->绑定]
    这两项有多大的差距呢?