首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
ASP | ASP.NET | JSP | PHP | AJAX | XML | Java script | HTML/CSS | 服务器类
各大城市软件开发培训、软件人才免费咨询热线:400-700-5807
 您现在的位置: 中国IT实验室 >> WEB开发 >> 头条推荐 >> 正文
ASP关于分页查询和性能问题
ChinaItLab  2007-12-6  保存本文  佚名  收藏本站

  分页查询是经常能够遇到的问题,我们首先看看分页查询存在的理由:方便用户:用户不可能一次察看所有数据,所以一页一页的翻看比较好。
 
  提高性能:一次从数据库中提取所有数据会比较慢。
 
  那么现在我来尝试反驳上述理由:真的方便吗?我们考虑下面的情况如果数据只有20条。
 
  如果数据超过1000条。
 
  第一种显然不必分页查询。奇怪的是第二种也不必,因为没有哪个用户愿意一页一页的翻到最后,如果用户查询到的数据超过了他所关心的数据范围,我认为应该让他重新输入查询条件,就像我们使用google一样。
 
  但是作为一个友好的应用界面,我们总是希望用户可以全面的了解他的查询结果,所以有必要告诉用户:“你查到了多少数据,但是,目前只能显示前1000条,如果您希望察看所有数据,那么应该如何如何…… ”
 
  性能会提高吗?
 
  如果数据量很小,显然性能不会有明显的提升,相反,性能会大大下降。因为数据库执行了不必要的查询和查询条件。
 
  如果数据量很大,性能也不见得有明显提升,因为你总是要执行一个额外的count查询,并且,组合SQL的时候极有可能造成全表扫描。当然这要看数据库的实现原理了。
 
  可以想像,分页查询对于性能的影响和数据量之间的关系应该是一个曲线,数据量小的时候会降低性能,数据量大的时候可能(根据不同的数据库)会提升性能。关键是通过测试,找到曲线的拐点。性能不是根据经验和感觉得到的,而是通过测试得到的另外,如果一次全部取出数据,的确会造成空间性能的影响,但是,现在内存很便宜……
 
  负面影响对于一个架构良好的web应用,将pageNo和PageSize在各个类之间传递实在是不爽,这两个数据明显属于表现层。当然,如果你使用RoR算俺没说。
 
  明显提高编程复杂度,尤其是在考虑数据库无关性的时候。
 
  奇怪的现象:为什么没有一个大型数据库直接提供分页查询?Oracle的RowNo不是用于分页的,SQLServer的Top更不是。
 
  结论ExtremeTable、DisplayTag、JSF DataTable都提供了简单的分页方式,那就是在结果集合中分页。使用非常方便,而且使得逻辑清晰,大大提高了工作效率。绝大多数情况下,可以直接使用这种方式。
 
  如果通过测试,发现上述方式影响了性能,那么考虑使用分页查询。
 
  对于用户量很大的应用,因为内存的原因,也可以考虑分页查询。但是,我个人更推荐缓存方式:同样的查询放在一个缓存中……
 
  采用合理的设计,屏蔽开发人员处理分页逻辑。比如,将分页逻辑和count查询放在父类,开发人员负责组合查询条件。具体看设计模式吧。
 
  欢迎大家讨论!!!
中国IT教育热线咨询
相关文章
asp根据表单自动生成sql语句的函数
ASP连接11种数据库的语法总结
教你优化你的ASP程序
asp去除HTML标记的三个实用函数
ASP添加验证码的解决方法
最新文章
·PHP正则表达式从url中取得域名
·php设计模式介绍之迭代器模式
·简单学习php遇到的主要问题
·asp根据表单自动生成sql语句的函
·雅虎选项卡特效
 文章评论

 精彩友情推荐
·Asp源码 PHP源码
·CGI源码 JSP源码
·建站书籍教程
·服务器软件 .net源码
·建站工具软件
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
ASP.NET ASP PHP JSP
·extjs ComboBox联动下拉菜单示例08-01
·漫谈.Net开发关于命名空间和目录划分07-31
·在Silverlight应用程序中操作Cookie07-28
·带附加条件的NewID()用法(downmoon)07-28
·对自定义路由进行单元测试07-28
·javascript实现yield07-28
·在ASP.NET中使用Google Maps07-28
·Sql Server2005 实现Oracle10g的hash表分区功07-28
·asp.net get set用法07-26
·Asp.net 控件开发—数据回传07-26
·接口vs. 的实体类07-26
·php设计模式介绍之迭代器模式08-02
·简单学习php遇到的主要问题08-02
·asp根据表单自动生成sql语句的函数08-02
·教你优化你的ASP程序03-07
·asp去除HTML标记的三个实用函数03-07
·ASP添加验证码的解决方法03-07
·ASP通用文章分页函数:非记录集分页03-07
·ASP教程基础:十天学会ASP第三天03-07
·ASP教程基础:十天学会ASP第二天03-07
·ASP教程基础:十天学会ASP第一天03-07
·能够生成google xml地图的asp源码03-06
·Linux系统下让PHP提高性能的工具APC05-06
·一个完整、安全的PHP用户登录系统11-14
·Apache+PHP+MySQL建立数据库驱动的动态网站08-24
·用SSH与PHP相连接 确保数据传输的安全性08-23
·PHP5手动最简安装方法08-03
·PHP程序加速探索之服务器负载测试07-11
·完全讲解PHP+MySQL的分页显示示例分析05-30
·用Suhosin加强PHP脚本语言安全性05-26
·初学入门 PHP 和 MySQL05-17
·传奇的诞生 PHP三位创始人简介05-10
·大型系统上PHP令人不爽的九大原因05-10
·ASP.NET和PHP、JSP究竟学哪个?07-30
·JAVA (Jsp)利用Google的Translate开发API07-29
·由Servlet获得FacesContext及ManagedBeans07-24
·用JOTM向Servlet中添加事务07-18
·用servlet生成验证码07-16
·JSP/Servlet伪静态网页实现07-08
·JSP和Servlet的关系浅谈06-15
·妙用异步Servlet扩展AJAX应用程序06-11
·servlet生成验证码图片06-02
·java.servlet.Filter的应用05-30
·Java程序员必看--扩展鼠标右键菜单功能05-13
  培训中心
人才交流中心 技术交流中心
  ITLab技术交流平台: