sql分页 sql server,oracle,db2,mysql

场景一(假设用户只会浏览前面数十页的情况):

思路:取出 页大小*页数的数据,然后拿去 intStartIndex和intEndIndex直接的数据;

优点: 书写简单,通用,适用于用户只会浏览最初几页的情况

缺点:如果数据量超过千万,读取最后几页时会很慢。

【sql server】:

select top 页大小*页数 * from table1 ; 获得数据,然后通过计算拿对应的数据。

【oracle】:

select * from (select TMP_TAB.*, rownum as RN

from (select * from table1) TMP_TAB) WHERE RN<=页大小*页数

【db2】:

select * from table1 fetch first 页大小*页数 rows only

【mysql】:

select * from table1 limit  页大小*页数

注:limit后如果是一个参数则从0开始

场景二(用户随意访问具体页):

思路: 取出对应的start和end的页条数

优点:能直接拿取,

缺点:书写复杂,且sql sqrver 必须指定一个主键或排序才能完成分页。

【sql server 2000版本】:需要主键id

select top 页大小 from table1 where id not in( select top 页大小*页数 id from table1 order by id) order by id

【sql server 2005或以上】:需要排序字段

select * from (select row_number() over (order by id) as rn,* from table1 ) where rn>=页开始 and rn =< 页大小*页数)

【db2】:需要排序字段,比sql2005函数少了个下杠号

select * from (select rownumber() over (order by id) as rn,* from table1 ) where rn>=页开始 and rn =< 页大小*页数)

【oracle】

select * from (select TMP_TAB.*, rownum as RN

from (select * from table1) TMP_TAB where RN<=页大小*页数) WHERE RN>=页开始

【mysql】:

select * from table1 limit 页开始,页大小

时间: 2024-12-22 07:25:28

sql分页 sql server,oracle,db2,mysql的相关文章

SQL Server,Oracle,DB2索引建立语句的对比

原文引至:http://jvortex.blog.163.com/blog/static/16961890020122141010878/ 我们知道,索引是用于加速数据库查询的数据库对象.原理就是减少查询的IO操作,从而达到加速的目的.本文我们主要对SQL Server,Oracle,DB2上的索引建立语句进行了总结,接下来就让我们一起来了解一下这部分内容. 索引的种类: 聚集索引:根据数据行的键值在表或视图中排序和存储这些数据行. 非聚集索引:具有独立于数据行的结构. 唯一索引:确保索引键不包

SQL 分页 SQL SERVER 2008

public IList<UserInfo> GetPageList(int pageSize, int pageIndex, out int totalItemCount) { var totalSql = "SELECT COUNT(1) FROM UserInfo"; Object result = GetScalar(totalSql); totalItemCount = result == null ? 0 : ConvertHandler.ToInt32(res

数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1)

上一篇文章http://www.cnblogs.com/valiant1882331/p/4056403.html写的太长了,所以就换了一篇,链接上一节继续 字符串的拼接 MySql中可以使用"+"来拼接两个字符串. select '12'+'33',FAge+'1' from t_employee 执行完毕会输出,下面是解释:在Mysql中当用+连接两个字段的时候,Mysql会尝试将字段值转换为数字类型(如果转换失败则默认字段值为0),然后进行字段的加法运算,因此,当计算'12'+'

[数据库]Oracle和mysql中的分页总结

物理分页 •在sql查询时,从数据库只检索分页需要的数据 •通常不同的数据库有着不同的物理分页语句 •mysql物理分页,采用limit关键字 •例如:检索11-20条 select * from user limit 10,10 ; * 每次只查询10条记录.当点击下一页的时候,查询数据库,查询后10条. * 优点:如果数据量非常大,不会导致内存溢出. * 缺点:每次都与数据库进行交互. * 分页一般采用数据库的sql语句完成分页查询. * MYSQL分页:使用limit关键字. * Orac

Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句

最近把平时在项目中常用到的数据库分页sql总结了下.大家可以贴出分页更高效的sql语句.sqlserver分页  第一种分页方法 需用到的参数:  pageSize 每页显示多少条数据  pageNumber 页数 从客户端传来  totalRecouds 表中的总记录数 select count (*) from 表名  totalPages 总页数  totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/

C#连接Access、SQL Server、Oracle、MySQL、DB2和SyBase数据库的代码集

C#连接六类数据库的代码集 本文列出了C#连接Access.SQL Server.Oracle.MySQL.DB2和SyBase六种不同数据库的程序源码和需要注意的点. 1.C#连接Access 程序代码: Code using System.Data;using System.Data.OleDb; .. string strConnection="Provider=Microsoft.Jet.OleDb.4.0;"; strConnection+[email protected]&

Oracle、MySql、Sql Server比对

1.    价格 MySql:廉价(部分免费):当前,MySQL採用双重授权(DualLicensed),他们是GPL和MySQLAB制定的商业许可协议.假设你在一个遵循GPL的自由(开源)项目中使用MySQL,那么你能够遵循GPL协议免费使用MySQL.否则,你须要购买MySQLAB制定的那个商业许可协议.Windows $200,Unix或Linux自行安装免费,.Unix或Linux第三方安装$200. Sql Server:适中. SQL 2008 标准版:[1CPU 无限用户 R2 版

atitit。mssql sql server 转换mysql 及 分页sql ast的搭建

atitit.mssql sql server 转换mysql  及 分页sql ast的搭建 1. 主要的的转换::函数的转换,分页的转换 1 2. 思路::mssql sql >>ast>>mysql 1 3. sql主要的如下::: 1 4. Mssql2MysqlConvertor (proj:wechatAdm4propt 2 1. 主要的的转换::函数的转换,分页的转换 2. 思路::mssql sql >>ast>>mysql 3. sql主要

整理部分java代码和oracle,mysql,sql server对比数据类型

搜索了一下网上关于数据类型的对比,几乎没有三种数据库的对比,我就写了一些字段的对比,如果有不对的地方,请各位不吝指教. JAVA字段 oracle字段 mysql字段 sql server字段 int number int int java.lang.double number(p,s) double float java.lang.String varchar2 varchar varchar java.sql.Date date date ( year) datetime2 java.sql