`
gyht0808
  • 浏览: 115596 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

(转)分页的常用方法

SQL 
阅读更多

表中主键必须为标识列,[ID] int IDENTITY (1,1) 

1.分页方案一:(利用Not In和SELECT TOP分页) 

语句形式:  
SELECT TOP 页记录数量 * 
FROM 表名 
WHERE (ID NOT IN 
  (SELECT TOP (每页行数*(页数-1)) ID 
  FROM 表名 
  ORDER BY ID)) 
  ORDER BY ID 
//自己还可以加上一些查询条件 


例: 
select top 2 * 
from Sys_Material_Type 
where (MT_ID not in 
    (select top (2*(3-1)) MT_ID from Sys_Material_Type  order by MT_ID)) 
order by MT_ID 



2.分页方案二:(利用ID大于多少和SELECT TOP分页) 

语句形式: 
SELECT TOP 每页记录数量 * 
FROM 表名 
WHERE (ID > 
          (SELECT MAX(id) 
    FROM (SELECT TOP 每页行数*页数 id  FROM 表 
          ORDER BY id) AS T) 
      ) 
ORDER BY ID 

例: 
SELECT TOP 2 * 
FROM Sys_Material_Type 
WHERE (MT_ID > 
          (SELECT MAX(MT_ID) 
          FROM (SELECT TOP (2*(3-1)) MT_ID 
                FROM Sys_Material_Type 
                ORDER BY MT_ID) AS T)) 
ORDER BY MT_ID 



3.分页方案三:(利用SQL的游标存储过程分页) 
create  procedure SqlPager 
@sqlstr nvarchar(4000), --查询字符串 
@currentpage int, --第N页 
@pagesize int --每页行数 
as 
set nocount on 
declare @P1 int, --P1是游标的id 
@rowcount int 
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1, @rowcount=@rowcount output 
select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页 
set @currentpage=(@currentpage-1)*@pagesize+1 
exec sp_cursorfetch @P1,16,@currentpage,@pagesize 
exec sp_cursorclose @P1 
set nocount off 



4.总结: 
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。 
建议优化的时候,加上主键和索引,查询效率会提高。 

通过SQL 查询分析器,显示比较:我的结论是: 
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句 
分页方案一:(利用Not In和SELECT TOP分页)  效率次之,需要拼接SQL语句 
分页方案三:(利用SQL的游标存储过程分页)    效率最差,但是最为通用 

分享到:
评论

相关推荐

    sturts +hernate+ spring分页通用方法

    Struts、Hibernate和Spring(简称SSH)是Java Web开发中常用的三大开源框架,它们各自负责Web应用程序的不同层面:Struts负责表现层,Hibernate处理持久化层,而Spring则作为全面的容器,支持AOP(面向切面编程)和...

    net实用类50个常用方法升级版分页

    ///StringConvert()汉字转拼音 ///StringNumber()数字转换中文 ///StringRep()url参数为中文时候转换加密 ///StringRes()url参数为中文时候转换解密 ///ShowWindowForm()弹出新窗口页面 ///...

    javaweb两中分页方法

    本文将详细介绍两种常用的JavaWeb分页方法:基于数据库查询的分页和基于内存的分页。 一、基于数据库查询的分页 1. SQL查询分页: 这种方法直接在SQL查询语句中实现分页。大多数数据库系统如MySQL、Oracle、SQL ...

    .net50个常用方法简单华丽的分页控件功能大的分页控件 50个实用方法

    ///StringConvert()汉字转拼音 ///StringNumber()数字转换中文 ///StringRep()url参数为中文时候转换加密 ///StringRes()url参数为中文时候转换解密 ///ShowWindowForm()弹出新窗口页面 ///...

    Oracle 3种分页SQL方法比较

    本文将详细探讨三种常用的Oracle分页SQL方法:ROWNUM、ROWNUM结合子查询以及新引入的Oracle 12c的FETCH NEXT WITH OFFSET语法。这三种方法各有优缺点,适用于不同的场景。 1. ROWNUM方法: ROWNUM是Oracle中最基础...

    10经典常用的js分页代码(开发必备)

    "10经典常用的js分页代码(开发必备)"这个资源集合了十个在实际开发中广泛使用的JavaScript分页实现方案。 1. **基础概念**:分页通常涉及到数据的动态加载,通过将大量数据分成若干页,每次只显示一部分,用户可以...

    常用带跳转功能分页

    本主题“常用带跳转功能分页”主要关注如何实现具有跳转功能的分页,并且能够适应各种样式需求,以提高用户操作的便捷性和网站的易用性。 分页通常涉及到以下几个关键知识点: 1. **数据查询限制**:在数据库查询...

    jquery 3D分页翻转滑块.zip

    通过封装JavaScript的常用操作,jQuery使得开发者能够更高效地编写代码,减少出错的可能性。在3D分页翻转滑块中,jQuery负责处理用户的交互事件,如点击或滑动,以及触发相应的动画效果。 接着,我们来探讨3D翻转...

    常见的几种分页语句和方法

    本文将详细介绍几种常用的分页方法,包括SQL语句分页、Hibernate分页等。 #### SQL语句分页 SQL语句分页是最基本也是最直接的方式之一。通过调整查询语句,我们可以获取到特定范围的数据记录。下面将介绍两种常用...

    分页插件.zip

    4. **初始化插件**:在JavaScript中调用jQuery选择器和插件方法,设置分页配置并绑定到数据源。 5. **处理分页事件**:当用户点击分页按钮时,触发对应的事件处理函数,更新页面内容。 通过这样的配置,开发者可以...

    SSM常用的CRUD+pagehepler分页

    本项目以"SSM常用的CRUD+pagehepler分页"为主题,展示了如何在SSM环境中实现基本的增删改查(CRUD)操作,并结合PageHelper分页插件进行数据展示。 **1. Spring框架**:Spring是Java企业级应用的核心框架,提供依赖...

    常用的数据库分页语句

    以下是对SQL Server、Oracle和MySQL这三种常用数据库系统的分页查询语句的详细解释。 **SQL Server** 在SQL Server中,分页查询通常涉及`TOP`关键字配合子查询和`ORDER BY`来实现。一个通用的分页查询模板如下: `...

    JSP分页技术(多种方法)

    本文件“JSP分页技术(多种方法)”中,将探讨几种常见的JSP分页实现方法。 1. **基于SQL的分页** 这是最基础的分页方法,通过在SQL查询语句中添加`LIMIT`和`OFFSET`或`ROWNUM`(根据数据库类型)来实现。例如,在...

    常用的Ajax分页,不用手写分页,节省宝贵时间

    本文将深入探讨一种常用的Ajax分页方法,帮助开发者节省宝贵时间,提升网站性能。 #### Ajax分页的基本原理 Ajax分页的核心在于异步请求数据并更新页面。传统分页通常涉及页面的完全重新加载,这不仅消耗资源,也...

    C#后台分页及数据库脚本常用的几种分页写法

    本文将详细介绍几种常用的C#后台分页方法及其数据库脚本实现。 #### 第一种:从DataSet里筛选分页行的数据 这种方法是在客户端进行分页处理。首先,通过查询获取所有数据到一个`DataSet`中,然后根据当前页数和每...

    常用数据库sql分页

    数据库SQL分页技术 数据库分页是指从大规模的数据集中提取指定的记录数,以减少数据传输量,提高应用程序的性能和用户体验。常见的数据库管理系统包括MySQL、SQL Server、Oracle、DB2等,每种数据库管理系统都有其...

    分页工具类、一些常用的分页格式、

    分页工具类、一些常用的分页格式、如常见的文字分页、论坛文字分页、论坛图片分页、

    JSP精心收藏的21种分页方法

    本资源"JSP精心收藏的21种分页方法"正是针对这一需求,提供了多种实用且高效的分页解决方案。以下是这些方法的一些关键知识点: 1. **基础分页**:这是最简单的分页方式,通过计算总条数和每页显示的条数,设置页码...

    ACCESS数据库大数据量分页的几种方法比较及测试结果分析

    这个方法是最为常用的 ACCESS 分页方法。缺点:每次都要读入符合条件的所有记录,然后再定位于对应页的记录。当数据量大的时候,效率就十分的低下。与此相似的方法是利用 ado 的 move 方法,每次将记录集游标移动 ...

    模拟分页式存储管理中硬件的地址转换和缺页中断

    在计算机系统中,分页式虚拟存储系统是一种常用的存储管理机制。该系统将作业信息的副本存放在磁盘上,当作业被选中时,将其开始几页先装入主存且启动执行。在这种系统中,硬件的地址转换机构起着至关重要的作用。...

Global site tag (gtag.js) - Google Analytics