- 浏览: 215237 次
- 性别:
- 来自: 江西
文章分类
- 全部博客 (109)
- C# (29)
- ASP.NET (30)
- MSSQL (29)
- javascript (9)
- cmd (3)
- ORACLE (4)
- log4j (1)
- window (5)
- FTP (1)
- Shell (1)
- java (1)
- IIS (7)
- html (11)
- SQL (3)
- Jquery (11)
- IE (3)
- 火狐、谷歌 (2)
- wince (2)
- JSON (5)
- List (1)
- Foreach (1)
- SQLhelper (1)
- Ajax (1)
- Firebird (1)
- mysql (7)
- js (2)
- jQuery.autocomplete (1)
- dataTable (1)
- Http (1)
- get (1)
- datetime (1)
- powshell (1)
- URL Protocol (1)
- Office (1)
- Excel (1)
- ASP.NET,算法,秘钥 (1)
- 浏览器 (1)
- Tomcat (1)
最新评论
转载http://jianfulove.iteye.com/blog/1871854
分页查询就是根据需要每次只返回所需要的数据,而不用每次都从数据库中全部把数据提取出来,这样可以降低程序与数据库之间的数据传送量,并且还可以提高程序的性能。 一般来说我们在数据量大的情况下总是会分页显示(谁也不会一下子将几万条数据全部一次性显示给用户),这样决定我们返回的查询结果集的参数有两个:当前显示的页数pageNo和每页要显示的记录条数pageSize。
一般作为查询数据库返回的结果有两个:正要查询当前页的所有记录集(List)和某条件下数据库中的记录总数(totalRecords);
为了体现面向对象编程,我们会把分页的数据封装在一个单独的类里
Java代码
import java.util.List;
public class PageModel {
private List list;
private int totalRecords;
private int pageSize;
private int pageNo;
/**
* 总页数
* @return
*/
public int getTotalPages() {
return (this.totalRecords + this.pageSize - 1)/this.pageSize;
}
/**
* 取得首页
* @return
*/
public int getTopPageNo() {
return 1;
}
/**
* 上一页
* @return
*/
public int getPreviousPageNo() {
if (this.pageNo <= 1){
return 1;
}
return this.pageNo - 1;
}
/**
* 下一页
* @return
*/
public int getNextPageNo() {
if (this.pageNo >= this.getBottomPageNo()) {
return this.getBottomPageNo();
}
return this.pageNo + 1;
}
/**
* 尾页
* @return
*/
public int getBottomPageNo() {
return this.getTotalPages();
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
}
Oracle 的sql
第一种写法
select * from ( select a.*,rownum rn
from (select * from user_login_info t) a where rownum <=40
) where rn >=21;
第二种写法
select * from (
select a.*,rownum rn from (select * from user_login_info t) a
) where rn between 21 and 40;
对比这两种写法,绝大多数的情况下,第一个查询的效率比第二个高得多。
这是由于CBO优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条件WHERE ROWNUM <= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就终止查询将结果返回了。
而第二个查询语句,由于查询条件BETWEEN 21 AND 40是存在于查询的第三层,而Oracle无法将第三层的查询条件推到最内层(即使推到最内层也没有意义,因为最内层查询不知道RN代表什么)。因此,对于第二个查询语句,Oracle最内层返回给中间层的是所有满足条件的数据,而中间层返回给最外层的也是所有数据。数据的过滤在最外层完成,显然这个效率要比第一个查询低得多。
SQL Server 2000/2005
SELECT TOP 页大小 * FROM table1 WHERE id NOT IN ( SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id ) ORDER BY id
方法2:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 * FROM table1 WHERE id > ( SELECT ISNULL(MAX(id),0) FROM ( SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id ) A ) ORDER BY id
方法3:
适用于 SQL Server 2005
SELECT TOP 页大小 * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1 ) A WHERE RowNumber > 页大小*(页数-1)
说明,页大小:每页的行数;页数:第几页。使用时,请把“页大小”以及“页大小*(页数-1)”替换成数码。
MYSQL
SELECT * FROM TT LIMIT 1,20
SELECT * FROM TT LIMIT 21,30
/*
如果你是几千上万数据,就直接使用mysql自带的函数 limit的普通用法就ok了,如果是100万以上的数据,可能就要讲方法了,下面我们来做个百万级数据的分页查询语句.
mysql> select * from news where id>=(select id from news limit 490000,1) limit 10; //0.18 sec //很 明显,这 种方式胜出 .
mysql> select * from news limit 490000,10 //0.22 sec;
*/
以下的文章主要介绍的是MySQL分页的实际操作方案,其实关于实现MySQL分页的最简单的方法就是利用利用mysql数据库的LIMIT函数,LIMIT [offset,size] rows可以从MySQL数据库表中第M条记录开始检索N条记录的语句为:
SELECT * FROM 表名称 LIMIT M,N
例如从表Sys_option(主键为sys_id)中从第10条记录开始检索20条记录,语句如下:
select * from sys_option limit 10,20
select * from table [查询条件] order by id limit ?,?
分页查询就是根据需要每次只返回所需要的数据,而不用每次都从数据库中全部把数据提取出来,这样可以降低程序与数据库之间的数据传送量,并且还可以提高程序的性能。 一般来说我们在数据量大的情况下总是会分页显示(谁也不会一下子将几万条数据全部一次性显示给用户),这样决定我们返回的查询结果集的参数有两个:当前显示的页数pageNo和每页要显示的记录条数pageSize。
一般作为查询数据库返回的结果有两个:正要查询当前页的所有记录集(List)和某条件下数据库中的记录总数(totalRecords);
为了体现面向对象编程,我们会把分页的数据封装在一个单独的类里
Java代码
import java.util.List;
public class PageModel {
private List list;
private int totalRecords;
private int pageSize;
private int pageNo;
/**
* 总页数
* @return
*/
public int getTotalPages() {
return (this.totalRecords + this.pageSize - 1)/this.pageSize;
}
/**
* 取得首页
* @return
*/
public int getTopPageNo() {
return 1;
}
/**
* 上一页
* @return
*/
public int getPreviousPageNo() {
if (this.pageNo <= 1){
return 1;
}
return this.pageNo - 1;
}
/**
* 下一页
* @return
*/
public int getNextPageNo() {
if (this.pageNo >= this.getBottomPageNo()) {
return this.getBottomPageNo();
}
return this.pageNo + 1;
}
/**
* 尾页
* @return
*/
public int getBottomPageNo() {
return this.getTotalPages();
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
}
Oracle 的sql
第一种写法
select * from ( select a.*,rownum rn
from (select * from user_login_info t) a where rownum <=40
) where rn >=21;
第二种写法
select * from (
select a.*,rownum rn from (select * from user_login_info t) a
) where rn between 21 and 40;
对比这两种写法,绝大多数的情况下,第一个查询的效率比第二个高得多。
这是由于CBO优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条件WHERE ROWNUM <= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就终止查询将结果返回了。
而第二个查询语句,由于查询条件BETWEEN 21 AND 40是存在于查询的第三层,而Oracle无法将第三层的查询条件推到最内层(即使推到最内层也没有意义,因为最内层查询不知道RN代表什么)。因此,对于第二个查询语句,Oracle最内层返回给中间层的是所有满足条件的数据,而中间层返回给最外层的也是所有数据。数据的过滤在最外层完成,显然这个效率要比第一个查询低得多。
SQL Server 2000/2005
SELECT TOP 页大小 * FROM table1 WHERE id NOT IN ( SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id ) ORDER BY id
方法2:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 * FROM table1 WHERE id > ( SELECT ISNULL(MAX(id),0) FROM ( SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id ) A ) ORDER BY id
方法3:
适用于 SQL Server 2005
SELECT TOP 页大小 * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1 ) A WHERE RowNumber > 页大小*(页数-1)
说明,页大小:每页的行数;页数:第几页。使用时,请把“页大小”以及“页大小*(页数-1)”替换成数码。
MYSQL
SELECT * FROM TT LIMIT 1,20
SELECT * FROM TT LIMIT 21,30
/*
如果你是几千上万数据,就直接使用mysql自带的函数 limit的普通用法就ok了,如果是100万以上的数据,可能就要讲方法了,下面我们来做个百万级数据的分页查询语句.
mysql> select * from news where id>=(select id from news limit 490000,1) limit 10; //0.18 sec //很 明显,这 种方式胜出 .
mysql> select * from news limit 490000,10 //0.22 sec;
*/
以下的文章主要介绍的是MySQL分页的实际操作方案,其实关于实现MySQL分页的最简单的方法就是利用利用mysql数据库的LIMIT函数,LIMIT [offset,size] rows可以从MySQL数据库表中第M条记录开始检索N条记录的语句为:
SELECT * FROM 表名称 LIMIT M,N
例如从表Sys_option(主键为sys_id)中从第10条记录开始检索20条记录,语句如下:
select * from sys_option limit 10,20
select * from table [查询条件] order by id limit ?,?
发表评论
-
用一条insert语句来插入多行数据
2016-05-23 10:35 1747oracle、sqlserver不支持inse ... -
关于distinct 和group by的去重逻辑浅析
2016-05-20 11:06 974在数据库操作中,我们常常遇到需要将数据去重计数的工作。例如: ... -
mysql和mssql关键字key的转义
2016-05-20 10:30 786mysql反引号``,它在键盘的~这个键上,SqlServer ... -
SQL几种分页语句性能对比
2014-03-07 10:35 484SET STATISTICS IO ON select * ... -
MSQL2005以上对象名sysproperties 无效的错误
2014-03-03 11:59 1415在MSSQL2008R2里面执行的时候报错:对象名syspro ... -
IN和EXISTS性能上的区别
2014-02-24 16:46 816在外表大内部小的情况下,EXISTS性能比IN快,如果两个表的 ... -
SQL Server 2000 ——系统表和系统视图
2014-02-17 10:26 1204一、一般存储过程 1、 ... -
新增链接服务器
2014-02-17 10:19 780新增链接服务器 if exists (select * fro ... -
在MSSQL2000里面 对象名 'sys.servers' 无效 服务器: 消息 208,级别 16,状态 1,行 1
2014-02-17 10:12 3198在MSSQL2000里面不支持该 sys.servers查看 ... -
SQL SERVER2008数据库中创建和删除链接服务器
2014-02-11 13:43 5020--在SQL SERVER 2008里,可以按以下的方式建立链 ... -
SQL Server获取某月某季某年最后一天的SQL语
2013-11-25 20:26 1397项目中用到的,获取已知年份的第一天和最后一天,觉得网来的不错, ... -
SQL IO、性能
2013-08-30 09:04 997转载地址:http://blog.csdn.n ... -
sql中两个日期相减
2013-08-21 13:36 8996sql中两个日期相减 1、相差天数 select trun ... -
SET STATISTICS IO ON和获取表中的所有行
2013-08-14 11:58 697SET STATISTICS IO ON --通过来查看扫描 ... -
SQL CAST和CONVERT区别
2013-08-09 09:06 695一种数据类型的表达式转换为另一种数据类型的表达式。 CAS ... -
图表处理程序配置 [c:\TempImageFiles\] 中的临时目录无效
2013-07-24 11:15 3703图表处理程序配置 [c:\TempImageFiles\] 中 ... -
MS-SQL2005以上的版本解决Syscolumn表中数据不能修改
2013-07-06 11:41 588例如: 在MSSQL2000里面可以获取到相应的数据 获取Tr ... -
asp.net 在webcofig中连接数据库方式
2013-07-02 14:38 7491:window方式验证 <connectionStri ... -
解决用户 'IIS APPPOOL\Classic .NET AppPool' 登录失败 windows 7
2013-07-02 14:31 1133进入iis管理器 本地应用程序池 选中classic. net ... -
MS-SQL将已建的表的某个字段修改为默认的值
2013-05-15 16:48 813ALTER TABLE STOCK_INFO ADD CON ...
相关推荐
本教程将深入探讨10种不同的JS Web分页效果,这些效果设计精良,适用于现代网站的需求。 1. **基础分页**:这是最简单的分页实现,通过数字按钮展示当前页码和总页数,用户可以通过点击按钮切换页面。关键在于计算...
随着技术的发展,CSS3(层叠样式表第三版)为网页设计师提供了更多创新和动态的分页效果。本文将详细讲解"100套css3分页效果"这一主题,探讨如何利用CSS3实现各种美观且实用的分页样式,以及这些效果对不同浏览器的...
"多种分页效果的实现"这个主题涉及到如何使用不同的方法和技术来创建功能多样且视觉吸引力强的分页组件。在这个压缩包中,包含了多个JavaScript分页库的不同版本,这些库可能提供了各种各样的分页效果,如脚本翻页...
标题“几个不错的分页效果--美工效果而已”表明我们将探讨一些具有美观设计的分页实现。描述中的重复内容进一步强调了这个主题,即我们关注的是分页的视觉呈现。 分页效果的设计不仅关乎功能,更在于提升网站的整体...
本篇将深入探讨如何利用CSS创建超酷的分页效果,适用于HTML、ASP、JSP、PHP和ASPX等各种网页开发语言。 首先,我们需要理解分页的基本结构。通常,分页由以下几个部分组成:首页、上一页、数字链接、下一页和尾页。...
CSS(层叠样式表)是实现这种分页效果的关键技术,它允许设计师自定义网页的外观和布局。本主题将深入探讨“CSS分页效果配色方案”,并分析30种不同的样式,这些样式可能来源于知名门户网站,以提供网页设计的灵感。...
在本项目中,我们主要探讨的是如何实现"仿Google分页效果",并结合了表格隔行变色的视觉优化。这个项目的核心在于利用Ajax技术动态加载数据,以模拟Google搜索结果页面的分页功能,同时对展示数据的表格进行美化,...
在iOS开发中,分页效果是一种常见的用户界面设计,它能帮助用户在大量数据或内容中轻松导航。本文将深入探讨如何实现简单的分页效果,包括通过滑动和点击按钮两种方式。 首先,我们来理解分页的基本概念。在iOS应用...
在本文中,我们将讨论如何利用JS实现自动分页效果,这在处理大量数据或内容时非常有用,能提高用户体验并优化页面加载速度。 首先,我们来看一下基本的HTML结构。在这个例子中,我们有两个主要的div元素,一个用于...
本示例聚焦于使用原生JavaScript实现一个分页效果,同时结合图片的运动效果,以提升用户体验。以下是对这个话题的详细阐述: 1. **JavaScript基础**:JavaScript是一种广泛应用于Web开发的客户端脚本语言,它可以...
本主题将深入探讨如何使用jQuery在前端实现简单的分页效果,尤其适用于数据量不大的场景。 首先,jQuery是一个轻量级的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互。在前端实现分页,jQuery...
本文将详细介绍Struts2实现分页效果的第二种方法。 在Struts2中,实现分页通常涉及以下几个关键步骤: 1. **模型(Model)**:首先,我们需要一个实体类来存储待分页的数据,例如`User`。然后,创建一个`PageBean`类...
JavaScript(JS)作为客户端脚本语言,常常被用来实现这种动态分页效果,提供更好的用户体验。在这个场景中,我们将深入探讨如何使用JavaScript来实现分页功能。 一、理解分页原理 1. 数据源:首先,你需要一个...
在本文中,我们将深入探讨如何在ASP.NET MVC框架中实现分页效果,这对于任何Web开发人员,特别是初学者来说,都是一个重要的技能。MVC(Model-View-Controller)模式是一种设计模式,它有助于构建可维护、可扩展的...
本知识点将详细讲解如何在JSP中实现百度风格的分页效果。 首先,我们需要理解分页的基本原理。分页通常涉及两个关键部分:前端展示和后端处理。前端负责展示分页按钮和当前页数,后端则处理请求,根据用户选择的...
在ASP中实现自定义分页效果是常见的需求,尤其是在处理大量数据时,为了提高用户体验和加载速度,分页功能显得尤为重要。下面我们将深入探讨如何在ASP中实现这一功能。 一、理解分页基础概念 在网页中,分页是指将...
在这个基于SSH2实现的分页效果项目中,我们主要关注的是如何在SSH2框架下实现动态、高效的数据库查询分页功能,以及在MySQL数据库上操作数据。下面我们将详细探讨相关的知识点。 首先,Struts2作为MVC框架,负责...
最后,提到的"QQ图片20180228150343.png"和"QQ图片20180228150312.png"可能展示了分页效果的截图,而"rt2018"文件名无法判断其具体用途,可能是项目的一部分或者时间戳。 综上所述,这个压缩包提供了一套基于PHP、...
JavaScript(简称JS)分页效果是网页开发中常见的功能,尤其在处理大量数据时,用于提高用户体验和加载速度。此项目中的"JS分页效果"指的是利用JavaScript和相关的库(如jQuery)实现对数据进行分页显示的技术。下面...
此外,考虑到“JS特效-菜单导航”的标签,这可能意味着这个分页效果不仅仅局限于页面内容的切换,也可能被应用于菜单导航。例如,用户可以使用键盘在多级菜单之间导航,通过左右键选择子菜单项。这样的设计可以提高...