多语言展示
当前在线:1882今日阅读:175今日分享:29

MySQL、Oracle、SQLServer、PGSQL 数据库分页

虽然数据库都是使用 SQL,但是不同的厂商对SQL会有不同的实现,所以我们在使用数据库分页时对不同的数据库会有不同的写法,尤其关注如何写SQL,才能高效分页查询。
工具/原料
1

Navicat

2

MySQL

方法/步骤
1

1、Oracle 分页第一种:利用分析函数row_number() 方法第二种:直接使用rownum 虚列(推荐)

2

2、Oracle 分页第三种:不使用between and 进行分页。总结:显然第二种方法比较好,第三种方法最差!因为不用order by语句,会提高检索数据的速度的,尤其数据量越大时,第二种方法快速检索数据越明显。oracle中慎用带有order by的分页。尤其是在oracle10g中,会出现会引起混乱,即相同记录会出现在不同页中。

3

3、SqlServer 分页第一种方法:通过TOP函数来实现(推荐)第二种方法:通过Max函数来实现

4

4、SqlServer 分页第三种方法:通过 ROW_NUMBER 函数+Top 来实现第四种方法:通过 ROW_NUMBER 函数+Between And 来实现总结:1)第一种方法有一个致命的缺点,就是它含有NOT IN字样,要换成用not exists来代替not in;2)第二种方法注意ID必须唯一,不能使用复合主键,而且主键也必须是有规律的数字,否则无法比较3)第三种方法ROW_NUMBER() 就是生成一个顺序的行号,而他生成顺序的标准,就是后面紧跟的OVER(ORDER BY ReportID),其中ReportID可以是联合主键。不用说 自带函数时最差的,不要使用这种方式。4)与第三种方式一样,效率低下

5

5、mysql分页select   *   from   table   limit   start , size6、PostgreSQL 分页select   *   from   table   limit  size offset start

注意事项
1

MySQL 和 PostgreSQL 看起来很像,实际上有差异

2

Navicat 有各种不同的版本,下载时注意对应的数据库

推荐信息