在mysql的数据库中,我们可以直接使用 limit 5,10 来得到某页的数据。得益于mysql把分页的存储过程封装好了。
有些数据库比如DB2提供了ROW_NUMBER() over(order by) 函数来解决分页问题。比如:DB2
select * from
(SELECT ROW_NUMBER() over( order by PP.OPERATE_DATE desc, PP.OPERATE_ID asc) as row_id, PP.PUBLIC_POLICY_ID, PP.APPLY_NO,PP.POLICY_NO FROM T_PUBLIC_POLICY PP order by PP.OPERATE_DATE desc, PP.OPERATE_ID asc)
as Temp where row_id between 1 and 20
下页就是(21 ~ 40) ............................................
但是有些数据库是没有 此类的方法的,我们大多时候,采用sql来分页。比较多的使用 not in 的方法。
就是:SELECT TOP 页大小 * FROM Table1 WHERE (ID NOT IN (SELECT TOP 页大小*页数 id FROM 表 ORDER BY id)) ORDER BY ID
但这个存储过程有一个致命的缺点,就是它含有NOT IN字样。虽然我可以把它改造为: SELECT TOP 页大小 * FROM Table1 WHERE not exists(select * from (select top (页大小*页数) * from table1 order by id) b where b.id=a.id ) order by id
即,用not exists来代替not in,但二者的执行效率实际上是没有区别的。
在分页算法中,影响我们查询速度的关键因素有两点:TOP和NOT IN。TOP可以提高我们的查询速度,而NOT IN会减慢我们的查询速度,所以要提高我们整个分页算法的速度,就要彻底改造NOT IN,同其他方法来替代它。我们知道,几乎任何字段,我们都可以通过max(字段)或min(字段)来提取某个字段中的最大或最小值,所以如果这个字段不重复,那么就可以利用这些不重复的字段的max或min作为分水岭,使其成为分页算法中分开每页的参照物。在这里,我们可以用操作符“>”或“<”号来完成这个使命,
于是就有了如下分页方案:
select top 页大小 * from table1 where id>(select max (id) from (select top ((页码-1)*页大小) id from table1 order by id) as T) order by id
在选择即不重复值,又容易分辨大小的列时,我们通常会选择主键。
需要说明的是,这种方法,只适合按照特定列排序的情况。如果要求排序的列可能重复,则只好使用 Not In 的方式了。
在执行海量数据的时候,这种方法执行的效率比not in要高。
分享到:
相关推荐
在日常工作中,我们经常需要处理大量数据,并从中获取特定页面的数据。特别是在Web应用开发中,为了提高用户体验,通常会将数据进行分页显示。针对这一需求,本文将详细介绍如何在SQL Server中实现有效的分页查询。 ...
在SQL中,数据分页是一种常见的技术,用于在大量数据中分批次地显示结果,以提高用户界面的可读性和性能。在这个例子中,作者针对一个包含20万条记录和69个字段的`TORDER`表,设计了一种分页方法,主要基于`...
### JSP连接SQL数据库实现数据分页显示 #### 概述 本文档通过一个实际案例展示了如何使用JSP(Java Server Pages)与SQL数据库进行交互,并实现数据的分页显示功能。该示例包含了详细的代码及注释,有助于理解整个...
分页是数据库查询中常见的需求,特别是在处理大量数据时,为了提高用户体验,我们需要一次加载少量数据。在LINQ to SQL中,实现分页可以采用以下步骤: 1. **创建数据上下文**:首先,你需要创建一个继承自`System....
### 海量数据分页在SQL Server中的实现与优化 #### 概述 在Web应用程序开发中,分页浏览是一项非常重要的功能。特别是在处理大量数据时,如何高效地实现分页变得尤为关键。传统的ADO记录集分页法因其内存占用高、...
本文将深入探讨如何使用jQuery和AJAX实现高效的数据分页,结合给定的"ajax大量数据分页"标题和描述,我们将讲解jQuery分页插件的原理、使用方法以及优化策略。 首先,jQuery是一个轻量级的JavaScript库,它简化了...
总的来说,通过SQL Server和.NET的DATAGRIDVIEW控件实现数据分页显示是一项基础但关键的技能,它涉及到数据库查询优化、用户界面设计以及事件驱动编程等多个方面的知识。理解并掌握这些内容,对于提升你的软件开发...
当我们需要从大量数据中检索特定部分时,特别是在网页或者应用中显示数据,分页加载是一种非常实用的技术。"SQL分页加载数据"是指通过SQL查询来实现数据的分批次、按页展示,以提高性能和用户体验。下面我们将深入...
在Java编程中,连接SQL Server数据库并执行查询是常见的任务,尤其当涉及到大量数据时,分页显示就显得尤为重要。本篇文章将详细讲解如何使用Java连接SQL Server数据库,执行查询语句以及实现分页显示。 首先,我们...
当网页需要显示大量数据时,一次性加载所有数据不仅会消耗服务器资源,也可能导致用户界面响应变慢。因此,通常采用分页来只加载用户当前查看的部分数据,提高用户体验。SQL Server作为广泛使用的数据库系统,提供了...
在SQL Server 2005中,分页查询是一个常见的需求,特别是在处理大量数据时,为了提高用户体验,通常需要一次性加载一定数量的数据,而不是一次性显示所有数据。以下将详细讲解SQL Server 2005中分页查询的常用方法。...
ASP.NET SQL 存储过程分页是数据库查询中一种常用的技术,它可以帮助我们高效地处理大量数据,提高网站性能,并优化用户体验。在Web应用程序中,尤其是数据量庞大的时候,一次性加载所有数据会消耗大量服务器资源,...
在SQL Server数据库管理中,分页查询是一种常用的技术,它允许用户按页面浏览大量数据,而不是一次性加载所有结果。这在处理大型数据集时尤为重要,因为它可以提高性能,减少服务器负担,并提供更好的用户体验。本...
在数据库管理中,分页查询是一项非常重要的功能,它能够帮助用户有效地管理和展示大量数据,提高用户体验,同时减少服务器负载。SQL语句的分页通用代码实现是将数据集分割成多个部分,每次只加载一部分(即一页)到...
在SQL Server中实现数据分页是一项常见的需求,尤其是在处理大量数据时,为了提高查询效率和用户体验,分页显示数据成为了数据库设计中的一个关键点。在给定的代码示例中,作者通过创建一个存储过程`proc_cursor`来...
而`Pagination`则是处理大量数据时,分批次获取结果的策略。 1. **Criteria API 分页**: 使用Criteria API进行分页,我们需要引入`org.hibernate.criterion.Projections`和`org.hibernate.Criteria`。通过`...
### SQL 数据库实现分页技术教程 ...通过掌握上述提到的技术和方法,开发者可以在实际项目中更加灵活地处理大量数据的展示问题。希望本文能为初学者提供有益的指导,帮助他们更好地理解和运用数据分页技术。
在Java编程中,分页查询是一项非常重要的功能,特别是在处理大量数据时,它能有效地减少内存负担,提高应用性能。本教程将详细讲解如何在Java中实现不分框架的分页查询,同时涵盖对MySQL和SQL Server数据库的支持。 ...
在Java编程中,数据分页显示是Web应用中常见的需求,尤其在处理大量数据时,为了提高用户体验并优化服务器性能,通常需要将数据分成多个页面进行展示。本篇将深入探讨Java实现数据分页显示的核心技术和策略。 首先...