1. mysql
mysql分页的关键词是limit,看如下这句:
mysql> SELECT * FROM message ORDER BY id DESC LIMIT 10000, 20
limit 10000,20的意思扫描满足条件的10020行,扔掉前面的10000行,返回最后的20行。
其实这样还是存在一些性能上的问题,更多看这里;
2. oracle
oracle的分页就用这一句:
SELECT *
FROM (SELECT AA.*, ROWNUM RN
FROM (SELECT * FROM USERS ORDER BY ID DESC) AA
WHERE ROWNUM <= 10)
WHERE RN > 0
其实要完全理解这句SQL,还要看另外两篇文章:文章1 文章2;
3. DB2
例子:
select * from
(
select ROW_NUMBER() OVER(ORDER BY age DESC) AS ROWNUM,
name, no, age from student
) a
where ROWNUM > 20 and ROWNUM <=30
其中的over内部可以为空,这样就不排序了。
现在在WEB 应用中使用分页技术越来越普遍了,其中利用数据库查询分页是一种效率比较高的方法,
下面列出了Oracle, DB2 及 MySQL 分页查询写法。
一:Oracle
select * from (select rownum,name from table where rownum <=endIndex )
where rownum > startIndex
二:DB2
DB2分页查询
SELECT * FROM (Select 字段1,字段2,字段3,rownumber() over(ORDER BY 排序用的列名 ASC) AS rn from 表名) AS a1 WHERE a1.rn BETWEEN 10 AND 20
以上表示提取第10到20的纪录
select * from (select rownumber() over(order by id asc ) as rowid from table where rowid <=endIndex ) AS a1
where a1.rowid > startIndex
三:MySQL
select * from table limit start,pageNum
SELECT EVENTID , EVENTNAME , CREATETIME , ELAPSEDTIME , REPEATCOUNT , MESSAGE , LOCALINSTANCEID , STATUS , MEMO FROM(SELECT rownumber() OVER (ORDER BY CREATETIME ASC) AS rowid FROM MS_EVENT WHERE rowid <=20) as a1 WHERE a1.rowid >10
SELECT * FROM (SELECT EVENTID , EVENTNAME , CREATETIME , ELAPSEDTIME , REPEATCOUNT , MESSAGE , LOCALINSTANCEID , STATUS , MEMO,
ROWNUMBER() OVER (ORDER BY CREATETIME ASC) AS rn FROM MS_EVENT) AS a1 WHERE a1.rn BETWEEN 10 and 20
--------------------------------------------------------------------
1. 标准的rownum分页查询使用方法:
select *
from (select c.*, rownum rn from content c)
where rn >= 1
and rn <= 5
2. 但是如果, 加上order by addtime 排序则数据显示不正确
select *
from (select c.*, rownum rn from content c order by addtime)
where rn >= 1
and rn <= 5
解决方法,再加一层查询,则可以解决,
select *
from (select rownum rn, t.*
from (select title, addtime from content order by addtime desc) t)
where rn >= 1
and rn <= 5
如果要考虑到效率的问题,上面的还可以优化成(主要两者区别)
select *
from (select rownum rn, t.*
from (select title, addtime from content order by addtime desc) t
where rownum <= 10)
where rn >= 3
----------------------------------------------------------------------
如果查询结果需要分页,从效率上讲,下面的效率应该比较高(粉红色表示需要根据实际情况填充的地方)
三类数据库中进行分页查询的高效率方法(目前来看):
Oracle: SELECT * FROM (
SELECT MY_TABLE.*,ROWNUM AS MY_ROWNUM FROM (
/** 括号里写实际的需要查询的SQL语句**/
) AS MYTABLE WHERE ROWNUM <=200/**这里是一页中的最后一条记录**/
) WHERE MY_ROWNUM>=10 /**这里是一页中的第一条记录**/
SQLServer: SELECT * FROM (
SELECT TOP 页面容量 * FROM (
SELECT TOP 页面容量*当前页码 * FROM
表 WHERE 条件 ORDER BY 字段A ASC
)AS TEMPTABLE1 ORDER BY 字段A DESC
) AS TEMPTABLE2 ORDER BY 字段A ASC
MYSQL: SELECT 语句 LIMIT 页面的第一条记录-1,页面容量
分享到:
相关推荐
根据提供的文件信息,我们可以将其中涉及的数据库分页方法总结为以下三种,并分别对每种方法进行详细解析。 ### 第一种方法:TOP 和 NOT IN 的组合 这种方法通过使用 `TOP` 和 `NOT IN` 来实现分页查询。具体实现...
在Oracle数据库中,SQL分页是一种非常常见的查询技术,它允许我们从大量数据中按需获取一部分结果,而不是一次性加载所有记录。这对于提高用户体验和优化系统性能至关重要,尤其是在处理大数据量的Web应用中。本实践...
### C#后台分页及数据库脚本常用的几种分页写法 #### 分页技术概述 在Web开发中,为了提高用户体验以及服务器性能,通常会采用分页技术来展示大量数据。分页技术不仅可以减少单次请求的数据量,降低服务器压力,还...
SQL分页查询是数据库操作中常见的一种需求,特别是在大数据量的场景下,为了提高用户体验,通常需要对查询结果进行分页展示。SQL Server虽然在处理分页查询方面相对其他数据库系统较弱,但仍然提供了多种实现方式。...
分页技术是一种用于处理大数据量显示的技术,通过限制每次查询的数据数量,将数据分为多页展示,不仅可以提升用户体验,还能有效减轻服务器压力。 #### 原理 1. **计算总记录数**:首先,需要获取数据库中符合条件...
DB2、ORACLE SQL写法的主要区别 1、数据类型转换函数 2、Where条件弱类型判断 3、replace关键字 4、子查询别名 5、DATE数据类型的区别 6、分页的处理 7、decode函数 8、NVL函数 9、substr的不同 10、获取操作系统...
这个压缩包文件名"JAVA JAP分页写法大全"暗示了它可能包含各种不同的分页实现示例,这对于初学者来说是一个极好的学习资源。下面我们将详细探讨Java中常见的分页方法。 首先,我们要理解分页的基本概念。在处理大量...
2. **SQL写法问题**:SQL语句的编写方式直接影响查询效率。例如,不当的表连接、冗余的查询条件、复杂的嵌套查询等都会降低SQL执行速度。 3. **数据过多,分库分表**:随着数据库规模的增长,单一数据库表的数据量...
Servlet使用Java Persistence API (JPA) 或者 JDBC 连接到数据库,执行SQL查询,通常是一个带有LIMIT和OFFSET子句的SELECT语句,LIMIT用于指定每页的记录数,OFFSET用于跳过前几条记录,达到分页效果。 3. **...
在给定的“7个数据库SQL项目源码.rar”压缩包中,包含了多个与数据库管理和SQL编程相关的项目源码。这些项目源码是学习和理解数据库应用开发的宝贵资源,尤其是对于那些想要深入掌握SQL语言和C#编程的开发者而言。...
在SQL Server中,分页查询是数据库操作中常见的需求,特别是在处理大量数据时,为了提高用户体验,通常需要分批次地显示结果。本文将详细介绍SQL Server的两种分页方法:传统写法和SQL Server 2005及以后版本引入的...
标题提到的"asp最快的分页写法",意味着这是一种优化过的分页实现,它在处理大数据集时表现出更好的性能。接下来,我们将深入探讨ASP分页的关键知识点,并结合提供的文件名来解析这个快速分页方法可能的实现方式。 ...
前言 在实际开发过程中,当数据量比较多的时候,大量的数据一下子展示到页面上是非常不可取的。所以我们通常要进行分页(这里的分页是指真分页),而不是前端JS...一、三种分页SQL语句的介绍和写法 示例数据库的字段:
先看看目前这4种数据库的分页写法: 代码如下:— OracleSELECT * FROM ( SELECT ROWNUM RN, PageTab.* FROM ( SELECT * FROM User_Tables order by id desc ) PageTab where ROWNUM <= 3010 ) Where RN>= 3001...
Oracle SQL是甲骨文公司开发的一种关系数据库管理系统(RDBMS)中使用的SQL语言。Oracle的SQL语法强大且复杂,它不仅用于数据定义和数据操作,还包含了用于数据控制和事务控制的功能。以下是基于提供的内容的知识点...
同时,当数据量非常大时,可以考虑使用`OFFSET-FETCH`语法(SQL Server 2012及以后版本支持),因为它在某些情况下可能比`ROW_NUMBER()`更高效。 总之,在SQL Server 2005中进行分页查询,关键在于正确利用窗口函数...
Oracle数据库在处理大数据量时,分页查询是必不可少的操作,它可以有效地减少网络传输的数据量,提高用户界面的响应速度。本文将详细介绍Oracle中分页查询的SQL语法,并对比不同方法的效率。 1. **无ORDER BY排序的...
标题“Sql语法转换为Oracle语法”涉及到的主要知识点是SQL Server与Oracle数据库之间的SQL语句转换。这通常是因为在系统迁移或跨平台开发时,需要将SQL Server的查询语句适应Oracle数据库的语法。 描述中提到的...
7. **实际项目中的适应性**:在实际项目中,可能需要根据数据库类型和具体需求调整分页SQL的写法,例如Oracle支持ROWNUM,而MySQL则可以使用LIMIT和OFFSET。 **优化技巧**: 1. **缓存**:对于不经常变动的数据,...